001 package org.apache.maven.tools.plugin.extractor.java;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 /**
023 * List of all Javadoc annotations used to describe a java Mojo.
024 *
025 * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
026 * @version $Id: JavaMojoAnnotation.java 1340574 2012-05-19 21:53:49Z hboutemy $
027 * @since 2.4
028 */
029 public interface JavaMojoAnnotation
030 {
031 // ----------------------------------------------------------------------
032 // Descriptor for type i.e. Mojo
033 // ----------------------------------------------------------------------
034
035 /**
036 * Flags this Mojo to run it in a multi module way, i.e. aggregate the build with the set of projects listed
037 * as modules.
038 * <br/>
039 * Refer to <code>@aggregator</code>.
040 * <br/>
041 * <b>Note</b>: Should be defined in a Mojo Type.
042 */
043 String AGGREGATOR = "aggregator";
044
045 /**
046 * The configurator type to use when injecting parameter values into this Mojo. The value is normally deduced
047 * from the Mojo's implementation language, but can be specified to allow a custom ComponentConfigurator
048 * implementation to be used.
049 * <br/>
050 * Refer to <code>@configurator <roleHint></code>.
051 * <br/>
052 * <b>Note</b>: Should be defined in a Mojo Type.
053 */
054 String CONFIGURATOR = "configurator";
055
056 /**
057 * The description for the Mojo.
058 * <br/>
059 * Refer to <code>@description</code>.
060 * <br/>
061 * <b>Note</b>: Should be defined in a Mojo Type.
062 * <br/>
063 * <b>Note</b>: Mojo's description is auto-detected.
064 */
065 String DESCRIPTION = "description";
066
067 /**
068 * Refer to <code>@execute ...</code>.
069 * <br/>
070 * <b>Note</b>: Should be defined in a Mojo Type.
071 */
072 String EXECUTE = "execute";
073
074 /**
075 * The Mojo goal will be executed in isolation.
076 * <br/>
077 * Refer to <code>@execute goal="<goalName>"</code>.
078 * <br/>
079 * <b>Note</b>: Should be defined in a Mojo Type.
080 */
081 String EXECUTE_GOAL = "goal";
082
083 /**
084 * The Mojo will be invoked in a parallel lifecycle.
085 * <br/>
086 * Refer to <code>@execute lifecycle="<lifecycleId>"</code>.
087 * <br/>
088 * <b>Note</b>: Should be defined in a Mojo Type.
089 */
090 String EXECUTE_LIFECYCLE = "lifecycle";
091
092 /**
093 * The Mojo will be invoked in a parallel lifecycle, ending at the given phase.
094 * <br/>
095 * Refer to <code>@execute phase="<phaseName>"</code>.
096 * <br/>
097 * Refer to <code>@execute lifecycle="<lifecycleId>" phase="<phaseName>"</code>.
098 * <br/>
099 * <b>Note</b>: Should be defined in a Mojo Type.
100 */
101 String EXECUTE_PHASE = "phase";
102
103 /**
104 * Refer to <code>@executionStrategy <strategy></code>.
105 * <br/>
106 * <b>Note</b>: Should be defined in a Mojo Type.
107 */
108 String EXECUTION_STATEGY = "executionStrategy";
109
110 /**
111 * The name for the Mojo that users will reference to execute it.
112 * <br/>
113 * Refer to <code>@goal <goalName></code>.
114 * <br/>
115 * <b>Note</b>: Should be defined in a Mojo Type.
116 */
117 String GOAL = "goal";
118
119 /**
120 * The Mojo's fully-qualified class name.
121 * <br/>
122 * Refer to <code>@implementation</code>.
123 * <br/>
124 * <b>Note</b>: Should be defined in a Mojo Type.
125 * <br/>
126 * <b>Note</b>: Mojo's implementation is auto-detected.
127 */
128 String IMPLEMENTATION = "implementation";
129
130 /**
131 * Allow Mojo inheritance.
132 * <br/>
133 * Refer to <code>@inheritByDefault <true|false></code>.
134 * <br/>
135 * <b>Note</b>: Should be defined in a Mojo Type.
136 */
137 String INHERIT_BY_DEFAULT = "inheritByDefault";
138
139 /**
140 * Refer to <code>@instantiationStrategy <per-lookup></code>.
141 * <br/>
142 * <b>Note</b>: Should be defined in a Mojo Type.
143 */
144 String INSTANTIATION_STRATEGY = "instantiationStrategy";
145
146 /**
147 * The implementation language for the Mojo.
148 * <br/>
149 * Refer to <code>@language</code>.
150 * <br/>
151 * <b>Note</b>: Should be defined in a Mojo Type.
152 * <br/>
153 * <b>Note</b>: Mojo's implementation is auto-detected.
154 */
155 String LANGUAGE = "language";
156
157 /**
158 * Specifies the execution strategy.
159 * <br/>
160 * Refer to <code>@attainAlways</code>.
161 * <br/>
162 * <b>Note</b>: Should be defined in a Mojo Type.
163 * @deprecated use <code>@executionStrategy always</code> instead
164 */
165 String MULTI_EXECUTION_STRATEGY = "attainAlways";
166
167 /**
168 * Refer to <code>@phase <phaseName></code>.
169 * <br/>
170 * <b>Note</b>: Should be defined in a Mojo Type.
171 */
172 String PHASE = "phase";
173
174 /**
175 * Flags this Mojo as requiring the dependencies in the specified scope (or an implied scope) to be resolved
176 * before it can execute. Currently supports <code>compile</code>, <code>runtime</code>,
177 * <code>compile+runtime</code> and <code>test</code> scopes.
178 * <br/>
179 * Refer to <code>@requiresDependencyResolution <requiredScope></code>.
180 * <br/>
181 * <b>Note</b>: Should be defined in a Mojo Type.
182 */
183 String REQUIRES_DEPENDENCY_RESOLUTION = "requiresDependencyResolution";
184
185 /**
186 * Flags this Mojo as requiring the dependencies in the specified scope (or an implied scope) to be collected
187 * before it can execute. Currently supports <code>compile</code>, <code>runtime</code>,
188 * <code>compile+runtime</code> and <code>test</code> scopes.
189 * <br/>
190 * Refer to <code>@requiresDependencyCollection <requiredScope></code>.
191 * <br/>
192 * <b>Note</b>: Should be defined in a Mojo Type.
193 */
194 String REQUIRES_DEPENDENCY_COLLECTION = "requiresDependencyCollection";
195
196
197 /**
198 * Refer to <code>@requiresDirectInvocation <true|false></code>.
199 * <br/>
200 * <b>Note</b>: Should be defined in a Mojo Type.
201 */
202 String REQUIRES_DIRECT_INVOCATION = "requiresDirectInvocation";
203
204 /**
205 * Flags this Mojo to run online.
206 * <br/>
207 * Refer to <code>@requiresOnline <true|false></code>.
208 * <br/>
209 * <b>Note</b>: Should be defined in a Mojo Type.
210 */
211 String REQUIRES_ONLINE = "requiresOnline";
212
213 /**
214 * Flags this Mojo to run inside of a project.
215 * <br/>
216 * Refer to <code>@requiresProject <true|false></code>.
217 * <br/>
218 * <b>Note</b>: Should be defined in a Mojo Type.
219 */
220 String REQUIRES_PROJECT = "requiresProject";
221
222 /**
223 * Flags this Mojo to run inside reports.
224 * <br/>
225 * Refer to <code>@requiresReports <true|false></code>.
226 * <br/>
227 * <b>Note</b>: Should be defined in a Mojo Type.
228 */
229 String REQUIRES_REPORTS = "requiresReports";
230
231 /**
232 * Indicates that this mojo is thread-safe and can be run in parallel.
233 *
234 * <b>Note</b>: Should be defined in a Mojo Type.
235 */
236 String THREAD_SAFE = "threadSafe";
237
238
239 // ----------------------------------------------------------------------
240 // Descriptor for fields i.e. parameters
241 // ----------------------------------------------------------------------
242
243 /**
244 * Populate the field with an instance of a Plexus component. This is like declaring a requirement in a
245 * Plexus component.
246 * <br/>
247 * Refer to <code>@component ...</code>.
248 * <br/>
249 * <b>Note</b>: Should be defined in a Mojo Field.
250 */
251 String COMPONENT = "component";
252
253 /**
254 * Refer to <code>@component role="..."</code>.
255 * <br/>
256 * <b>Note</b>: Should be defined in a Mojo Field.
257 */
258 String COMPONENT_ROLE = "role";
259
260 /**
261 * Refer to <code>@component roleHint="..."</code>.
262 * <br/>
263 * <b>Note</b>: Should be defined in a Mojo Field.
264 */
265 String COMPONENT_ROLEHINT = "roleHint";
266
267 /**
268 * Refer to <code>@parameter ...</code>
269 * <br/>
270 * <b>Note</b>: Should be defined in a Mojo Field.
271 */
272 String PARAMETER = "parameter";
273
274 /**
275 * This defines an alias which can be used to configure a parameter. This is primarily useful to improve
276 * user-friendliness.
277 * <br/>
278 * Refer to <code>@parameter alias="..."</code>.
279 * <br/>
280 * <b>Note</b>: Should be defined in a Mojo Field.
281 */
282 String PARAMETER_ALIAS = "alias";
283
284 /**
285 * This defines the default value to be injected into this parameter of the Mojo at build time.
286 * <br/>
287 * Refer to <code>@parameter default-value="..."</code>.
288 * <br/>
289 * <b>Note</b>: Should be defined in a Mojo Field.
290 */
291 String PARAMETER_DEFAULT_VALUE = "default-value";
292
293 /**
294 * This defines the expression used to calculate the value to be injected into this parameter of the
295 * Mojo at build time.
296 * <br/>
297 * Refer to <code>@parameter expression="..."</code>.
298 * <br/>
299 * <b>Note</b>: Should be defined in a Mojo Field.
300 * @deprecated use PARAMETER_PROPERTY instead
301 */
302 String PARAMETER_EXPRESSION = "expression";
303
304 /**
305 * This defines the property used to calculate the value to be injected into this parameter of the
306 * Mojo at build time, which can come from <code>-D</code> execution, setting properties or pom properties.
307 * <br/>
308 * Refer to <code>@parameter property="..."</code>.
309 * <br/>
310 * <b>Note</b>: Should be defined in a Mojo Field.
311 */
312 String PARAMETER_PROPERTY = "property";
313
314 /**
315 * This defines the default implementation in the case the parameter type is an interface.
316 * <br/>
317 * Refer to <code>@parameter implementation="..."</code>.
318 * <br/>
319 * <b>Note</b>: Should be defined in a Mojo Field.
320 */
321 String PARAMETER_IMPLEMENTATION = "implementation";
322
323 /**
324 * Specifies that this parameter cannot be configured directly by the user (as in the case of POM-specified
325 * configuration).
326 * <br/>
327 * Refer to <code>@readonly</code>.
328 * <br/>
329 * <b>Note</b>: Should be defined in a Mojo Field.
330 */
331 String READONLY = "readonly";
332
333 /**
334 * Specifies that this parameter is required for the Mojo to function.
335 * <br/>
336 * Refer to <code>@required</code>.
337 * <br/>
338 * <b>Note</b>: Should be defined in a Mojo Field.
339 */
340 String REQUIRED = "required";
341
342 // ----------------------------------------------------------------------
343 // Descriptor for type and fields
344 // ----------------------------------------------------------------------
345
346 /**
347 * Refer to <code>@since <deprecated-text></code>
348 * <br/>
349 * <b>Note</b>: Could be defined in a Mojo Type or a Mojo Field.
350 */
351 String SINCE = "since";
352
353 /**
354 * Refer to <code>@deprecated <since-text></code>
355 * <br/>
356 * <b>Note</b>: Could be defined in a Mojo Type or a Mojo Field.
357 */
358 String DEPRECATED = "deprecated";
359
360 }