1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.apache.maven.plugin;
20  
21  import org.apache.maven.project.DuplicateArtifactAttachmentException;
22  import org.apache.maven.project.MavenProject;
23  
24  
25  
26  
27  public class PluginExecutionException extends PluginManagerException {
28  
29      private final MojoExecution mojoExecution;
30  
31      public PluginExecutionException(MojoExecution mojoExecution, MavenProject project, String message) {
32          super(mojoExecution.getMojoDescriptor(), project, message);
33          this.mojoExecution = mojoExecution;
34      }
35  
36      public PluginExecutionException(
37              MojoExecution mojoExecution, MavenProject project, String message, Throwable cause) {
38          super(mojoExecution.getMojoDescriptor(), project, message, cause);
39          this.mojoExecution = mojoExecution;
40      }
41  
42      public PluginExecutionException(MojoExecution mojoExecution, MavenProject project, Exception cause) {
43          super(mojoExecution.getMojoDescriptor(), project, constructMessage(mojoExecution, cause), cause);
44          this.mojoExecution = mojoExecution;
45      }
46  
47      public PluginExecutionException(
48              MojoExecution mojoExecution, MavenProject project, DuplicateArtifactAttachmentException cause) {
49          super(mojoExecution.getMojoDescriptor(), project, constructMessage(mojoExecution, cause), cause);
50          this.mojoExecution = mojoExecution;
51      }
52  
53      public MojoExecution getMojoExecution() {
54          return mojoExecution;
55      }
56  
57      private static String constructMessage(MojoExecution mojoExecution, Throwable cause) {
58          String message;
59  
60          if (mojoExecution != null) {
61              message = "Execution " + mojoExecution.getExecutionId() + " of goal "
62                      + mojoExecution.getMojoDescriptor().getId() + " failed";
63          } else {
64              message = "Mojo execution failed";
65          }
66  
67          if (cause != null && cause.getMessage() != null && !cause.getMessage().isEmpty()) {
68              message += ": " + cause.getMessage();
69          } else {
70              message += ".";
71          }
72  
73          return message;
74      }
75  }