View Javadoc

1   package org.kuali.maven.mojo.s3;
2   
3   import org.apache.maven.execution.MavenSession;
4   import org.apache.maven.plugin.AbstractMojo;
5   import org.apache.maven.plugin.MojoExecutionException;
6   import org.apache.maven.plugin.MojoFailureException;
7   import org.apache.maven.project.MavenProject;
8   import org.apache.maven.settings.Settings;
9   
10  /**
11   * Mojo essentials. Contains the "skip" logic that is the de facto standard for maven plugins. Contains a number of
12   * maven related properties that are common to most mojos. Also sets up logging so that if libraries called by a mojo
13   * issue log statements to Jakarta Commons Logging or Log4j, those log messages are shown in maven's output
14   */
15  public abstract class BaseMojo extends AbstractMojo {
16  
17      /**
18       * Convenience reference to System.getProperty("file.separator").
19       */
20      public static final String FS = System.getProperty("file.separator");
21  
22      /**
23       * Skip packaging if type is "pom".
24       */
25      public static final String SKIP_PACKAGING_TYPE = "pom";
26  
27      /**
28       * When <code>true</code>, skip the execution of this mojo.
29       *
30       * @parameter default-value="false"
31       */
32      private boolean skip;
33  
34      /**
35       * Setting this parameter to <code>true</code> will force the execution of this mojo, even if it would get skipped
36       * usually.
37       *
38       * @parameter expression="${forceMojoExecution}" default-value="false"
39       * @required
40       */
41      private boolean forceMojoExecution;
42  
43      /**
44       * The encoding to use when reading/writing files. If not specified this defaults to the platform specific encoding
45       * of whatever machine the build is running on.
46       *
47       * @parameter expression="${encoding}" default-value="${project.build.sourceEncoding}"
48       */
49      private String encoding;
50  
51      /**
52       * The Maven project this plugin runs in.
53       *
54       * @parameter expression="${project}"
55       * @required
56       * @readonly
57       */
58      private MavenProject project;
59  
60      /**
61       * @parameter expression="${settings}"
62       * @required
63       * @since 1.0
64       * @readonly
65       */
66      private Settings settings;
67  
68      /**
69       * @parameter default-value="${session}"
70       * @required
71       * @readonly
72       */
73      private MavenSession mavenSession;
74  
75      public void execute() throws MojoExecutionException, MojoFailureException {
76          if (skipMojo()) {
77              return;
78          }
79          executeMojo();
80      }
81  
82      /**
83       * This method is called after logging has been configured and only if mojo execution should not be skipped.
84       *
85       * @throws MojoExecutionException
86       * @throws MojoFailureException
87       */
88      protected abstract void executeMojo() throws MojoExecutionException, MojoFailureException;
89  
90      /**
91       * <p>
92       * Determine if the mojo execution should get skipped.
93       * </p>
94       * This is the case if:
95       * <ul>
96       * <li>{@link #skip} is <code>true</code></li>
97       * <li>if the mojo gets executed on a project with packaging type 'pom' and {@link #forceMojoExecution} is
98       * <code>false</code></li>
99       * </ul>
100      *
101      * @return <code>true</code> if the mojo execution should be skipped.
102      */
103     protected boolean skipMojo() {
104         if (skip) {
105             getLog().info("Skipping execution");
106             return true;
107         }
108 
109         if (!forceMojoExecution && project != null && SKIP_PACKAGING_TYPE.equals(project.getPackaging())) {
110             getLog().info("Skipping execution for project with packaging type '" + SKIP_PACKAGING_TYPE + "'");
111             return true;
112         }
113 
114         return false;
115     }
116 
117     /**
118      * @return the skip
119      */
120     public boolean isSkip() {
121         return skip;
122     }
123 
124     /**
125      * @param skip
126      * the skip to set
127      */
128     public void setSkip(final boolean skip) {
129         this.skip = skip;
130     }
131 
132     /**
133      * @return the forceMojoExecution
134      */
135     public boolean isForceMojoExecution() {
136         return forceMojoExecution;
137     }
138 
139     /**
140      * @param forceMojoExecution
141      * the forceMojoExecution to set
142      */
143     public void setForceMojoExecution(final boolean forceMojoExecution) {
144         this.forceMojoExecution = forceMojoExecution;
145     }
146 
147     /**
148      * @return the encoding
149      */
150     public String getEncoding() {
151         return encoding;
152     }
153 
154     /**
155      * @param encoding
156      * the encoding to set
157      */
158     public void setEncoding(final String encoding) {
159         this.encoding = encoding;
160     }
161 
162     /**
163      * @return the project
164      */
165     public MavenProject getProject() {
166         return project;
167     }
168 
169     /**
170      * @param project
171      * the project to set
172      */
173     public void setProject(final MavenProject project) {
174         this.project = project;
175     }
176 
177     /**
178      * @return the settings
179      */
180     public Settings getSettings() {
181         return settings;
182     }
183 
184     /**
185      * @param settings
186      * the settings to set
187      */
188     public void setSettings(final Settings settings) {
189         this.settings = settings;
190     }
191 
192     /**
193      * @return the mavenSession
194      */
195     public MavenSession getMavenSession() {
196         return mavenSession;
197     }
198 
199     /**
200      * @param mavenSession
201      * the mavenSession to set
202      */
203     public void setMavenSession(final MavenSession mavenSession) {
204         this.mavenSession = mavenSession;
205     }
206 
207 }