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.MojoExecutionEvent;
28 import org.apache.maven.execution.MojoExecutionListener;
29 import org.apache.maven.plugin.MojoExecutionException;
30
31 @Named
32 @Singleton
33 public class DelegatingMojoExecutionListener implements MojoExecutionListener {
34 private final List<MojoExecutionListener> listeners = new CopyOnWriteArrayList<>();
35
36 public void beforeMojoExecution(MojoExecutionEvent event) throws MojoExecutionException {
37 for (MojoExecutionListener listener : listeners) {
38 listener.beforeMojoExecution(event);
39 }
40 }
41
42 public void afterMojoExecutionSuccess(MojoExecutionEvent event) throws MojoExecutionException {
43 for (MojoExecutionListener listener : listeners) {
44 listener.afterMojoExecutionSuccess(event);
45 }
46 }
47
48 public void afterExecutionFailure(MojoExecutionEvent event) {
49 for (MojoExecutionListener listener : listeners) {
50 listener.afterExecutionFailure(event);
51 }
52 }
53
54 public void addMojoExecutionListener(MojoExecutionListener listener) {
55 this.listeners.add(listener);
56 }
57
58 public void removeMojoExecutionListener(MojoExecutionListener listener) {
59 this.listeners.remove(listener);
60 }
61 }