View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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   * Exception in the plugin manager.
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  }