001package org.apache.maven.tools.plugin.extractor.javadoc;
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 * @since 2.4
027 */
028@SuppressWarnings( "checkstyle:interfaceistype" )
029public interface JavadocMojoAnnotation
030{
031    // ----------------------------------------------------------------------
032    // Descriptor for type i.e. Mojo
033    // ----------------------------------------------------------------------
034
035    /**
036     * <p>
037     * Flags this Mojo to run it in a multi module way, i.e. aggregate the build with the set of projects listed
038     * as modules.
039     * </p>
040     * <p>
041     * Refer to <code>&#64;aggregator</code>.
042     * </p>
043     * <p>
044     * <b>Note</b>: Should be defined in a Mojo Type.
045     * </p>
046     */
047    String AGGREGATOR = "aggregator";
048
049    /**
050     * <p>
051     * The configurator type to use when injecting parameter values into this Mojo. The value is normally deduced
052     * from the Mojo's implementation language, but can be specified to allow a custom ComponentConfigurator
053     * implementation to be used.
054     * </p>
055     * <p>
056     * Refer to <code>&#64;configurator &lt;roleHint&gt;</code>.
057     * </p>
058     * <p>
059     * <b>Note</b>: Should be defined in a Mojo Type.
060     * </p>
061     */
062    String CONFIGURATOR = "configurator";
063
064    /**
065     * <p>
066     * The description for the Mojo.
067     * </p>
068     * <p>
069     * Refer to <code>&#64;description</code>.
070     * </p>
071     * <p>
072     * <b>Note</b>: Should be defined in a Mojo Type.
073     * </p>
074     * <p>
075     * <b>Note</b>: Mojo's description is auto-detected.
076     * </p>
077     */
078    String DESCRIPTION = "description";
079
080    /**
081     * <p>
082     * Refer to <code>&#64;execute ...</code>.
083     * </p>
084     * <p>
085     * <b>Note</b>: Should be defined in a Mojo Type.
086     * </p>
087     */
088    String EXECUTE = "execute";
089
090    /**
091     * <p>
092     * The Mojo goal will be executed in isolation.
093     * </p>
094     * <p>
095     * Refer to <code>&#64;execute goal="&lt;goalName&gt;"</code>.
096     * </p>
097     * <p>
098     * <b>Note</b>: Should be defined in a Mojo Type.
099     * </p>
100     */
101    String EXECUTE_GOAL = "goal";
102
103    /**
104     * <p>
105     * The Mojo will be invoked in a parallel lifecycle.
106     * </p>
107     * <p>
108     * Refer to <code>&#64;execute lifecycle="&lt;lifecycleId&gt;"</code>.
109     * </p>
110     * <p>
111     * <b>Note</b>: Should be defined in a Mojo Type.
112     * </p>
113     */
114    String EXECUTE_LIFECYCLE = "lifecycle";
115
116    /**
117     * <p>
118     * The Mojo will be invoked in a parallel lifecycle, ending at the given phase.
119     * </p>
120     * <p>
121     * Refer to <code>&#64;execute phase="&lt;phaseName&gt;"</code>.
122     * </p>
123     * <p>
124     * Refer to <code>&#64;execute lifecycle="&lt;lifecycleId&gt;" phase="&lt;phaseName&gt;"</code>.
125     * </p>
126     * <p>
127     * <b>Note</b>: Should be defined in a Mojo Type.
128     * </p>
129     */
130    String EXECUTE_PHASE = "phase";
131
132    /**
133     * <p>
134     * Refer to <code>&#64;executionStrategy &lt;strategy&gt;</code>.
135     * </p>
136     * <p>
137     * <b>Note</b>: Should be defined in a Mojo Type.
138     * </p>
139     */
140    String EXECUTION_STATEGY = "executionStrategy";
141
142    /**
143     * <p>
144     * The name for the Mojo that users will reference to execute it.
145     * </p>
146     * <p>
147     * Refer to <code>&#64;goal &lt;goalName&gt;</code>.
148     * </p>
149     * <p>
150     * <b>Note</b>: Should be defined in a Mojo Type.
151     * </p>
152     */
153    String GOAL = "goal";
154
155    /**
156     * <p>
157     * The Mojo's fully-qualified class name.
158     * </p>
159     * <p>
160     * Refer to <code>&#64;implementation</code>.
161     * </p>
162     * <p>
163     * <b>Note</b>: Should be defined in a Mojo Type.
164     * </p>
165     * <p>
166     * <b>Note</b>: Mojo's implementation is auto-detected.
167     * </p>
168     */
169    String IMPLEMENTATION = "implementation";
170
171    /**
172     * <p>
173     * Allow Mojo inheritance.
174     * </p>
175     * <p>
176     * Refer to <code>&#64;inheritByDefault &lt;true|false&gt;</code>.
177     * </p>
178     * <p>
179     * <b>Note</b>: Should be defined in a Mojo Type.
180     * </p>
181     */
182    String INHERIT_BY_DEFAULT = "inheritByDefault";
183
184    /**
185     * <p>
186     * Refer to <code>&#64;instantiationStrategy &lt;per-lookup&gt;</code>.
187     * </p>
188     * <p>
189     * <b>Note</b>: Should be defined in a Mojo Type.
190     * </p>
191     */
192    String INSTANTIATION_STRATEGY = "instantiationStrategy";
193
194    /**
195     * <p>
196     * The implementation language for the Mojo.
197     * </p>
198     * <p>
199     * Refer to <code>&#64;language</code>.
200     * </p>
201     * <p>
202     * <b>Note</b>: Should be defined in a Mojo Type.
203     * </p>
204     * <p>
205     * <b>Note</b>: Mojo's implementation is auto-detected.
206     * </p>
207     */
208    String LANGUAGE = "language";
209
210    /**
211     * <p>
212     * Specifies the execution strategy.
213     * </p>
214     * <p>
215     * Refer to <code>&#64;attainAlways</code>.
216     * </p>
217     * <p>
218     * <b>Note</b>: Should be defined in a Mojo Type.
219     * </p>
220     * @deprecated use <code>&#64;executionStrategy always</code> instead
221     */
222    String MULTI_EXECUTION_STRATEGY = "attainAlways";
223
224    /**
225     * <p>
226     * Refer to <code>&#64;phase &lt;phaseName&gt;</code>.
227     * </p>
228     * <p>
229     * <b>Note</b>: Should be defined in a Mojo Type.
230     * </p>
231     */
232    String PHASE = "phase";
233
234    /**
235     * <p>
236     * Flags this Mojo as requiring the dependencies in the specified scope (or an implied scope) to be resolved
237     * before it can execute. Currently supports <code>compile</code>, <code>runtime</code>,
238     * <code>compile+runtime</code> and <code>test</code> scopes.
239     * </p>
240     * <p>
241     * Refer to <code>&#64;requiresDependencyResolution &lt;requiredScope&gt;</code>.
242     * </p>
243     * <p>
244     * <b>Note</b>: Should be defined in a Mojo Type.
245     * </p>
246     */
247    String REQUIRES_DEPENDENCY_RESOLUTION = "requiresDependencyResolution";
248
249    /**
250     * <p>
251     * Flags this Mojo as requiring the dependencies in the specified scope (or an implied scope) to be collected
252     * before it can execute. Currently supports <code>compile</code>, <code>runtime</code>,
253     * <code>compile+runtime</code> and <code>test</code> scopes.
254     * </p>
255     * <p>
256     * Refer to <code>&#64;requiresDependencyCollection &lt;requiredScope&gt;</code>.
257     * </p>
258     * <p>
259     * <b>Note</b>: Should be defined in a Mojo Type.
260     * </p>
261     */
262    String REQUIRES_DEPENDENCY_COLLECTION = "requiresDependencyCollection";
263
264
265    /**
266     * <p>
267     * Refer to <code>&#64;requiresDirectInvocation &lt;true|false&gt;</code>.
268     * </p>
269     * <p>
270     * <b>Note</b>: Should be defined in a Mojo Type.
271     * </p>
272     */
273    String REQUIRES_DIRECT_INVOCATION = "requiresDirectInvocation";
274
275    /**
276     * <p>
277     * Flags this Mojo to run online.
278     * </p>
279     * <p>
280     * Refer to <code>&#64;requiresOnline &lt;true|false&gt;</code>.
281     * </p>
282     * <p>
283     * <b>Note</b>: Should be defined in a Mojo Type.
284     * </p>
285     */
286    String REQUIRES_ONLINE = "requiresOnline";
287
288    /**
289     * <p>
290     * Flags this Mojo to run inside of a project.
291     * </p>
292     * <p>
293     * Refer to <code>&#64;requiresProject &lt;true|false&gt;</code>.
294     * </p>
295     * <p>
296     * <b>Note</b>: Should be defined in a Mojo Type.
297     * </p>
298     */
299    String REQUIRES_PROJECT = "requiresProject";
300
301    /**
302     * <p>
303     * Flags this Mojo to run inside reports.
304     * </p>
305     * <p>
306     * Refer to <code>&#64;requiresReports &lt;true|false&gt;</code>.
307     * </p>
308     * <p>
309     * <b>Note</b>: Should be defined in a Mojo Type.
310     * </p>
311     */
312    String REQUIRES_REPORTS = "requiresReports";
313
314    /**
315     * <p>
316     * Indicates that this mojo is thread-safe and can be run in parallel.
317     * </p>
318     * <p>
319     * <b>Note</b>: Should be defined in a Mojo Type.
320     * </p>
321     */
322    String THREAD_SAFE = "threadSafe";
323
324
325    // ----------------------------------------------------------------------
326    // Descriptor for fields i.e. parameters
327    // ----------------------------------------------------------------------
328
329    /**
330     * <p>
331     * Populate the field with an instance of a Plexus component. This is like declaring a requirement in a
332     * Plexus component.
333     * </p>
334     * <p>
335     * Refer to <code>&#64;component ...</code>.
336     * </p>
337     * <p>
338     * <b>Note</b>: Should be defined in a Mojo Field.
339     * </p>
340     */
341    String COMPONENT = "component";
342
343    /**
344     * <p>
345     * Refer to <code>&#64;component role="..."</code>.
346     * </p>
347     * <p>
348     * <b>Note</b>: Should be defined in a Mojo Field.
349     * </p>
350     */
351    String COMPONENT_ROLE = "role";
352
353    /**
354     * <p>
355     * Refer to <code>&#64;component roleHint="..."</code>.
356     * </p>
357     * <p>
358     * <b>Note</b>: Should be defined in a Mojo Field.
359     * </p>
360     */
361    String COMPONENT_ROLEHINT = "roleHint";
362
363    /**
364     * <p>
365     * Refer to <code>&#64;parameter ...</code>
366     * </p>
367     * <p>
368     * <b>Note</b>: Should be defined in a Mojo Field.
369     * </p>
370     */
371    String PARAMETER = "parameter";
372
373    /**
374     * <p>
375     * This defines the name of the bean property used to get/set the field: by default, field name is used.
376     * </p>
377     * <p>
378     * Refer to <code>&#64;parameter name="..."</code>.
379     * </p>
380     * <p>
381     * <b>Note</b>: Should be defined in a Mojo Field.
382     * </p>
383     */
384    String PARAMETER_NAME = "name";
385
386    /**
387     * <p>
388     * This defines an alias which can be used to configure a parameter. This is primarily useful to improve
389     * user-friendliness.
390     * </p>
391     * <p>
392     * Refer to <code>&#64;parameter alias="..."</code>.
393     * </p>
394     * <p>
395     * <b>Note</b>: Should be defined in a Mojo Field.
396     * </p>
397     */
398    String PARAMETER_ALIAS = "alias";
399
400    /**
401     * <p>
402     * This defines the default value to be injected into this parameter of the Mojo at build time.
403     * </p>
404     * <p>
405     * Refer to <code>&#64;parameter default-value="..."</code>.
406     * </p>
407     * <p>
408     * <b>Note</b>: Should be defined in a Mojo Field.
409     * </p>
410     */
411    String PARAMETER_DEFAULT_VALUE = "default-value";
412
413    /**
414     * <p>
415     * This defines the expression used to calculate the value to be injected into this parameter of the
416     * Mojo at build time.
417     * </p>
418     * <p>
419     * Refer to <code>&#64;parameter expression="..."</code>.
420     * </p>
421     * <p>
422     * <b>Note</b>: Should be defined in a Mojo Field.
423     * </p>
424     * @deprecated use PARAMETER_PROPERTY instead
425     */
426    String PARAMETER_EXPRESSION = "expression";
427
428    /**
429     * <p>
430     * This defines the property used to calculate the value to be injected into this parameter of the
431     * Mojo at build time, which can come from <code>-D</code> execution, setting properties or pom properties.
432     * </p>
433     * <p>
434     * Refer to <code>&#64;parameter property="..."</code>.
435     * </p>
436     * <p>
437     * <b>Note</b>: Should be defined in a Mojo Field.
438     * </p>
439     */
440    String PARAMETER_PROPERTY = "property";
441
442    /**
443     * <p>
444     * This defines the default implementation in the case the parameter type is an interface.
445     * </p>
446     * <p>
447     * Refer to <code>&#64;parameter implementation="..."</code>.
448     * </p>
449     * <p>
450     * <b>Note</b>: Should be defined in a Mojo Field.
451     * </p>
452     */
453    String PARAMETER_IMPLEMENTATION = "implementation";
454
455    /**
456     * <p>
457     * Specifies that this parameter cannot be configured directly by the user (as in the case of POM-specified
458     * configuration).
459     * </p>
460     * <p>
461     * Refer to <code>&#64;readonly</code>.
462     * </p>
463     * <p>
464     * <b>Note</b>: Should be defined in a Mojo Field.
465     * </p>
466     */
467    String READONLY = "readonly";
468
469    /**
470     * <p>
471     * Specifies that this parameter is required for the Mojo to function.
472     * </p>
473     * <p>
474     * Refer to <code>&#64;required</code>.
475     * </p>
476     * <p>
477     * <b>Note</b>: Should be defined in a Mojo Field.
478     * </p>
479     */
480    String REQUIRED = "required";
481
482    // ----------------------------------------------------------------------
483    // Descriptor for type and fields
484    // ----------------------------------------------------------------------
485
486    /**
487     * <p>
488     * Refer to <code>&#64;since &lt;deprecated-text&gt;</code>
489     * </p>
490     * <p>
491     * <b>Note</b>: Could be defined in a Mojo Type or a Mojo Field.
492     * </p>
493     */
494    String SINCE = "since";
495
496    /**
497     * <p>
498     * Refer to <code>&#64;deprecated &lt;since-text&gt;</code>
499     * </p>
500     * <p>
501     * <b>Note</b>: Could be defined in a Mojo Type or a Mojo Field.
502     * </p>
503     */
504    String DEPRECATED = "deprecated";
505
506}