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  import org.codehaus.plexus.util.StringUtils;
24  
25  
26  
27  
28  public class PluginExecutionException extends PluginManagerException {
29  
30      private final MojoExecution mojoExecution;
31  
32      public PluginExecutionException(MojoExecution mojoExecution, MavenProject project, String message) {
33          super(mojoExecution.getMojoDescriptor(), project, message);
34          this.mojoExecution = mojoExecution;
35      }
36  
37      public PluginExecutionException(
38              MojoExecution mojoExecution, MavenProject project, String message, Throwable cause) {
39          super(mojoExecution.getMojoDescriptor(), project, message, cause);
40          this.mojoExecution = mojoExecution;
41      }
42  
43      public PluginExecutionException(MojoExecution mojoExecution, MavenProject project, Exception cause) {
44          super(mojoExecution.getMojoDescriptor(), project, constructMessage(mojoExecution, cause), cause);
45          this.mojoExecution = mojoExecution;
46      }
47  
48      public PluginExecutionException(
49              MojoExecution mojoExecution, MavenProject project, DuplicateArtifactAttachmentException cause) {
50          super(mojoExecution.getMojoDescriptor(), project, constructMessage(mojoExecution, cause), cause);
51          this.mojoExecution = mojoExecution;
52      }
53  
54      public MojoExecution getMojoExecution() {
55          return mojoExecution;
56      }
57  
58      private static String constructMessage(MojoExecution mojoExecution, Throwable cause) {
59          String message;
60  
61          if (mojoExecution != null) {
62              message = "Execution " + mojoExecution.getExecutionId() + " of goal "
63                      + mojoExecution.getMojoDescriptor().getId() + " failed";
64          } else {
65              message = "Mojo execution failed";
66          }
67  
68          if (cause != null && StringUtils.isNotEmpty(cause.getMessage())) {
69              message += ": " + cause.getMessage();
70          } else {
71              message += ".";
72          }
73  
74          return message;
75      }
76  }