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    @Deprecated
223    String MULTI_EXECUTION_STRATEGY = "attainAlways";
224
225    /**
226     * <p>
227     * Refer to <code>&#64;phase &lt;phaseName&gt;</code>.
228     * </p>
229     * <p>
230     * <b>Note</b>: Should be defined in a Mojo Type.
231     * </p>
232     */
233    String PHASE = "phase";
234
235    /**
236     * <p>
237     * Flags this Mojo as requiring the dependencies in the specified scope (or an implied scope) to be resolved
238     * before it can execute. Currently supports <code>compile</code>, <code>runtime</code>,
239     * <code>compile+runtime</code> and <code>test</code> scopes.
240     * </p>
241     * <p>
242     * Refer to <code>&#64;requiresDependencyResolution &lt;requiredScope&gt;</code>.
243     * </p>
244     * <p>
245     * <b>Note</b>: Should be defined in a Mojo Type.
246     * </p>
247     */
248    String REQUIRES_DEPENDENCY_RESOLUTION = "requiresDependencyResolution";
249
250    /**
251     * <p>
252     * Flags this Mojo as requiring the dependencies in the specified scope (or an implied scope) to be collected
253     * before it can execute. Currently supports <code>compile</code>, <code>runtime</code>,
254     * <code>compile+runtime</code> and <code>test</code> scopes.
255     * </p>
256     * <p>
257     * Refer to <code>&#64;requiresDependencyCollection &lt;requiredScope&gt;</code>.
258     * </p>
259     * <p>
260     * <b>Note</b>: Should be defined in a Mojo Type.
261     * </p>
262     */
263    String REQUIRES_DEPENDENCY_COLLECTION = "requiresDependencyCollection";
264
265
266    /**
267     * <p>
268     * Refer to <code>&#64;requiresDirectInvocation &lt;true|false&gt;</code>.
269     * </p>
270     * <p>
271     * <b>Note</b>: Should be defined in a Mojo Type.
272     * </p>
273     */
274    String REQUIRES_DIRECT_INVOCATION = "requiresDirectInvocation";
275
276    /**
277     * <p>
278     * Flags this Mojo to run online.
279     * </p>
280     * <p>
281     * Refer to <code>&#64;requiresOnline &lt;true|false&gt;</code>.
282     * </p>
283     * <p>
284     * <b>Note</b>: Should be defined in a Mojo Type.
285     * </p>
286     */
287    String REQUIRES_ONLINE = "requiresOnline";
288
289    /**
290     * <p>
291     * Flags this Mojo to run inside of a project.
292     * </p>
293     * <p>
294     * Refer to <code>&#64;requiresProject &lt;true|false&gt;</code>.
295     * </p>
296     * <p>
297     * <b>Note</b>: Should be defined in a Mojo Type.
298     * </p>
299     */
300    String REQUIRES_PROJECT = "requiresProject";
301
302    /**
303     * <p>
304     * Flags this Mojo to run inside reports.
305     * </p>
306     * <p>
307     * Refer to <code>&#64;requiresReports &lt;true|false&gt;</code>.
308     * </p>
309     * <p>
310     * <b>Note</b>: Should be defined in a Mojo Type.
311     * </p>
312     */
313    String REQUIRES_REPORTS = "requiresReports";
314
315    /**
316     * <p>
317     * Indicates that this mojo is thread-safe and can be run in parallel.
318     * </p>
319     * <p>
320     * <b>Note</b>: Should be defined in a Mojo Type.
321     * </p>
322     */
323    String THREAD_SAFE = "threadSafe";
324
325
326    // ----------------------------------------------------------------------
327    // Descriptor for fields i.e. parameters
328    // ----------------------------------------------------------------------
329
330    /**
331     * <p>
332     * Populate the field with an instance of a Plexus component. This is like declaring a requirement in a
333     * Plexus component.
334     * </p>
335     * <p>
336     * Refer to <code>&#64;component ...</code>.
337     * </p>
338     * <p>
339     * <b>Note</b>: Should be defined in a Mojo Field.
340     * </p>
341     */
342    String COMPONENT = "component";
343
344    /**
345     * <p>
346     * Refer to <code>&#64;component role="..."</code>.
347     * </p>
348     * <p>
349     * <b>Note</b>: Should be defined in a Mojo Field.
350     * </p>
351     */
352    String COMPONENT_ROLE = "role";
353
354    /**
355     * <p>
356     * Refer to <code>&#64;component roleHint="..."</code>.
357     * </p>
358     * <p>
359     * <b>Note</b>: Should be defined in a Mojo Field.
360     * </p>
361     */
362    String COMPONENT_ROLEHINT = "roleHint";
363
364    /**
365     * <p>
366     * Refer to <code>&#64;parameter ...</code>
367     * </p>
368     * <p>
369     * <b>Note</b>: Should be defined in a Mojo Field.
370     * </p>
371     */
372    String PARAMETER = "parameter";
373
374    /**
375     * <p>
376     * This defines the name of the bean property used to get/set the field: by default, field name is used.
377     * </p>
378     * <p>
379     * Refer to <code>&#64;parameter name="..."</code>.
380     * </p>
381     * <p>
382     * <b>Note</b>: Should be defined in a Mojo Field.
383     * </p>
384     */
385    String PARAMETER_NAME = "name";
386
387    /**
388     * <p>
389     * This defines an alias which can be used to configure a parameter. This is primarily useful to improve
390     * user-friendliness.
391     * </p>
392     * <p>
393     * Refer to <code>&#64;parameter alias="..."</code>.
394     * </p>
395     * <p>
396     * <b>Note</b>: Should be defined in a Mojo Field.
397     * </p>
398     */
399    String PARAMETER_ALIAS = "alias";
400
401    /**
402     * <p>
403     * This defines the default value to be injected into this parameter of the Mojo at build time.
404     * </p>
405     * <p>
406     * Refer to <code>&#64;parameter default-value="..."</code>.
407     * </p>
408     * <p>
409     * <b>Note</b>: Should be defined in a Mojo Field.
410     * </p>
411     */
412    String PARAMETER_DEFAULT_VALUE = "default-value";
413
414    /**
415     * <p>
416     * This defines the expression used to calculate the value to be injected into this parameter of the
417     * Mojo at build time.
418     * </p>
419     * <p>
420     * Refer to <code>&#64;parameter expression="..."</code>.
421     * </p>
422     * <p>
423     * <b>Note</b>: Should be defined in a Mojo Field.
424     * </p>
425     * @deprecated use PARAMETER_PROPERTY instead
426     */
427    @Deprecated
428    String PARAMETER_EXPRESSION = "expression";
429
430    /**
431     * <p>
432     * This defines the property used to calculate the value to be injected into this parameter of the
433     * Mojo at build time, which can come from <code>-D</code> execution, setting properties or pom properties.
434     * </p>
435     * <p>
436     * Refer to <code>&#64;parameter property="..."</code>.
437     * </p>
438     * <p>
439     * <b>Note</b>: Should be defined in a Mojo Field.
440     * </p>
441     */
442    String PARAMETER_PROPERTY = "property";
443
444    /**
445     * <p>
446     * This defines the default implementation in the case the parameter type is an interface.
447     * </p>
448     * <p>
449     * Refer to <code>&#64;parameter implementation="..."</code>.
450     * </p>
451     * <p>
452     * <b>Note</b>: Should be defined in a Mojo Field.
453     * </p>
454     */
455    String PARAMETER_IMPLEMENTATION = "implementation";
456
457    /**
458     * <p>
459     * Specifies that this parameter cannot be configured directly by the user (as in the case of POM-specified
460     * configuration).
461     * </p>
462     * <p>
463     * Refer to <code>&#64;readonly</code>.
464     * </p>
465     * <p>
466     * <b>Note</b>: Should be defined in a Mojo Field.
467     * </p>
468     */
469    String READONLY = "readonly";
470
471    /**
472     * <p>
473     * Specifies that this parameter is required for the Mojo to function.
474     * </p>
475     * <p>
476     * Refer to <code>&#64;required</code>.
477     * </p>
478     * <p>
479     * <b>Note</b>: Should be defined in a Mojo Field.
480     * </p>
481     */
482    String REQUIRED = "required";
483
484    // ----------------------------------------------------------------------
485    // Descriptor for type and fields
486    // ----------------------------------------------------------------------
487
488    /**
489     * <p>
490     * Refer to <code>&#64;since &lt;deprecated-text&gt;</code>
491     * </p>
492     * <p>
493     * <b>Note</b>: Could be defined in a Mojo Type or a Mojo Field.
494     * </p>
495     */
496    String SINCE = "since";
497
498    /**
499     * <p>
500     * Refer to <code>&#64;deprecated &lt;since-text&gt;</code>
501     * </p>
502     * <p>
503     * <b>Note</b>: Could be defined in a Mojo Type or a Mojo Field.
504     * </p>
505     */
506    String DEPRECATED = "deprecated";
507
508}