1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.lifecycle;
20
21 import javax.inject.Named;
22 import javax.inject.Singleton;
23
24 import java.util.List;
25 import java.util.concurrent.CopyOnWriteArrayList;
26
27 import org.apache.maven.execution.ProjectExecutionEvent;
28 import org.apache.maven.execution.ProjectExecutionListener;
29
30 @Named
31 @Singleton
32 public class DelegatingProjectExecutionListener implements ProjectExecutionListener {
33 private final List<ProjectExecutionListener> listeners = new CopyOnWriteArrayList<>();
34
35 public void beforeProjectExecution(ProjectExecutionEvent event) throws LifecycleExecutionException {
36 for (ProjectExecutionListener listener : listeners) {
37 listener.beforeProjectExecution(event);
38 }
39 }
40
41 public void beforeProjectLifecycleExecution(ProjectExecutionEvent event) throws LifecycleExecutionException {
42 for (ProjectExecutionListener listener : listeners) {
43 listener.beforeProjectLifecycleExecution(event);
44 }
45 }
46
47 public void afterProjectExecutionSuccess(ProjectExecutionEvent event) throws LifecycleExecutionException {
48 for (ProjectExecutionListener listener : listeners) {
49 listener.afterProjectExecutionSuccess(event);
50 }
51 }
52
53 public void afterProjectExecutionFailure(ProjectExecutionEvent event) {
54 for (ProjectExecutionListener listener : listeners) {
55 listener.afterProjectExecutionFailure(event);
56 }
57 }
58
59 public void addProjectExecutionListener(ProjectExecutionListener listener) {
60 this.listeners.add(listener);
61 }
62
63 public void removeProjectExecutionListener(ProjectExecutionListener listener) {
64 this.listeners.remove(listener);
65 }
66 }