aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/maven/apache-maven-3.3.3/maven-plugin-api/src/main/mdo/plugin.mdo
blob: 83bf3bf3c81b5af81a0373c320d35b83024f717b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<model xmlns="http://modello.codehaus.org/MODELLO/1.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://modello.codehaus.org/MODELLO/1.4.0 http://modello.codehaus.org/xsd/modello-1.4.0.xsd">
  <id>plugin</id>
  <name>PluginDescriptor</name>
  <description><![CDATA[
    Plugin descriptor, stored in <code>META-INF/maven/plugin.xml</code> in a plugin's jar artifact.
    This descriptor is generally generated from plugin sources, using
    <a href="/plugins/maven-plugin-plugin/">maven-plugin-plugin</a>.
    <p><i>Notice:</i> this documentation is generated from a Modello model but the code executed is not generated
    from this descriptor. Please report if you find anything wrong.</p>
  ]]></description>
  <defaults>
    <default>
      <key>package</key>
      <value>plugin descriptor XML documentation (no java generation)</value><!-- intentionally non-buildable value -->
    </default>
  </defaults>
  <classes>
    <class rootElement="true" xml.tagName="plugin">
      <name>PluginDescriptor</name>
      <version>1.0.0</version>
      <description><![CDATA[Root element of the <code>plugin.xml</code> file.]]></description>
      <!-- see o.a.m.plugin.descriptor.PluginDescriptor -->
      <fields>
        <field>
          <name>name</name>
          <version>1.0.0</version>
          <description>Name of the plugin.</description>
          <type>String</type>
        </field>
        <field>
          <name>description</name>
          <version>1.0.0</version>
          <description>Description of the plugin.</description>
          <type>String</type>
        </field>
        <field>
          <name>groupId</name>
          <version>1.0.0</version>
          <description>The group id of the plugin.</description>
          <type>String</type>
        </field>
        <field>
          <name>artifactId</name>
          <version>1.0.0</version>
          <description>The artifact id of the plugin.</description>
          <type>String</type>
        </field>
        <field>
          <name>version</name>
          <version>1.0.0</version>
          <description>The version of the plugin.</description>
          <type>String</type>
        </field>
        <field>
          <name>goalPrefix</name>
          <version>1.0.0</version>
          <description></description>
          <type>String</type>
        </field>
        <field>
          <name>isolatedRealm</name>
          <version>1.0.0</version>
          <description></description>
          <type>boolean</type>
          <defaultValue>false</defaultValue>
        </field>
        <field>
          <name>inheritedByDefault</name>
          <version>1.0.0</version>
          <description></description>
          <type>boolean</type>
          <defaultValue>true</defaultValue>
        </field>
        <field xdoc.separator="blank">
          <name>mojos</name>
          <version>1.0.0</version>
          <association>
            <type>MojoDescriptor</type>
            <multiplicity>*</multiplicity>
          </association>
          <description>Description of each Mojo provided by the plugin.</description>
        </field>
        <field xdoc.separator="blank">
          <name>dependencies</name>
          <version>1.0.0</version>
          <association>
            <type>Dependency</type>
            <multiplicity>*</multiplicity>
          </association>
          <description>
            A set of dependencies which the plugin requires in order to function. This enables the plugin to function
            independently of its POM (or at least to declare the libraries it needs to run).
          </description>
        </field>
      </fields>
    </class>

    <class>
      <name>MojoDescriptor</name>
      <version>1.0.0</version>
      <description><![CDATA[
        A Mojo description.
      ]]></description>
      <!-- see o.a.m.plugin.descriptor.MojoDescriptor -->
      <fields>
        <field>
          <name>goal</name>
          <required>true</required>
          <version>1.0.0</version>
          <type>String</type>
          <description>
            The goal name for the Mojo, that users will reference from the command line to execute the Mojo directly,
            or inside a POM in order to provide Mojo-specific configuration.
          </description>
        </field>
        <field>
          <name>description</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>The description of this Mojo's functionality.</description>
        </field>
        <field>
          <name>implementation</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>
            The Mojo's fully-qualified class name (or script path in the case of non-Java Mojos).
          </description>
        </field>
        <field>
          <name>language</name>
          <version>1.0.0</version>
          <type>String</type>
          <defaultValue>java</defaultValue>
          <description>The implementation language for this Mojo (java, beanshell, etc.).</description>
        </field>
        <field>
          <name>phase</name>
          <version>1.0.0</version>
          <type>String</type>
          <description><![CDATA[
            Defines a default phase to bind a mojo execution to if the user does not explicitly set a phase in the POM.
            <i>Note:</i> This will not automagically make a mojo run when the plugin declaration is added
            to the POM. It merely enables the user to omit the <code>&lt;phase&gt;</code> element from the
            surrounding <code>&lt;execution&gt;</code> element.
          ]]></description>
        </field>
        <field>
          <name>executePhase</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>Reference the invocation phase of the Mojo.</description>
        </field>
        <field>
          <name>executeGoal</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>Reference the invocation goal of the Mojo.</description>
        </field>
        <field>
          <name>executeLifecycle</name>
          <version>1.0.0</version>
          <type>String</type>
          <description></description>
        </field>
        <field>
          <name>requiresDependencyResolution</name>
          <version>1.0.0</version>
          <type>String</type>
          <defaultValue>runtime</defaultValue>
          <description><![CDATA[
            Flags this Mojo as requiring the dependencies in the specified class path to be resolved before it can
            execute: <code>compile</code>, <code>runtime</code>, <code>test</code>,
            <code>compile+runtime</code> (since Maven 3.0) or <code>runtime+system</code> (since Maven 3.0)
          ]]></description>
        </field>
        <field>
          <name>requiresDependencyCollection</name>
          <version>1.0.0</version>
          <type>String</type>
          <description><![CDATA[
            Flags this mojo as requiring information about the dependencies that would make up the specified class
            path. As the name suggests, this is similar to requiresDependencyResolution and supports the same values.
            The important difference is this will not resolve the files for the dependencies, i.e. the artifacts
            associated with a Maven project can lack a file. As such, this annotation is meant for mojos that only
            want to analyze the set of transitive dependencies, in particular during early lifecycle phases where
            full dependency resolution might fail due to projects which haven't been built yet.
          ]]></description>
        </field>
        <field>
          <name>requiresDirectInvocation</name>
          <version>1.0.0</version>
          <type>boolean</type>
          <description>Flags this Mojo to be invoked directly only.</description>
          <defaultValue>false</defaultValue>
        </field>
        <field>
          <name>requiresProject</name>
          <version>1.0.0</version>
          <type>boolean</type>
          <description>Flags this Mojo to require running inside of a project.</description>
          <defaultValue>true</defaultValue>
        </field>
        <field>
          <name>requiresReports</name>
          <version>1.0.0</version>
          <type>boolean</type>
          <description>Flags this Mojo to require running inside of a reports context. Unsupported since Maven 3.0.</description>
          <defaultValue>false</defaultValue>
        </field>
        <field>
          <name>requiresOnline</name>
          <version>1.0.0</version>
          <type>boolean</type>
          <description>Flags this Mojo to require online mode for its operation.</description>
          <defaultValue>false</defaultValue>
        </field>
        <field>
          <name>aggregator</name>
          <version>1.0.0</version>
          <type>boolean</type>
          <description>
            Flags this Mojo to run it in a multi module way, i.e. aggregate the build with the set of projects
            listed as modules.
          </description>
          <defaultValue>false</defaultValue>
        </field>
        <field>
          <name>inheritedByDefault</name>
          <version>1.0.0</version>
          <type>boolean</type>
          <description>Specify that the Mojo is inherited.</description>
          <defaultValue>true</defaultValue>
        </field>
        <field>
          <name>threadSafe</name>
          <version>1.0.0</version>
          <type>boolean</type>
          <description>
            Marks this mojo as being thread-safe, i.e. the mojo safely supports concurrent execution during parallel
            builds. Mojos without this annotation will make Maven output a warning when used during a parallel build
            session. Since Maven 3.0.
          </description>
          <defaultValue>false</defaultValue>
        </field>
        <field>
          <name>instantiationStrategy</name>
          <version>1.0.0</version>
          <type>String</type>
          <defaultValue>per-lookup</defaultValue>
          <description>Specify the instantiation strategy.</description>
        </field>
        <field>
          <name>executionStrategy</name>
          <version>1.0.0</version>
          <type>String</type>
          <description><![CDATA[
            Specify the execution strategy: <code>once-per-session</code>, <code>always</code>.
          ]]></description>
          <defaultValue>once-per-session</defaultValue>
        </field>
        <field>
          <name>since</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>Specify the version when the Mojo was added to the API. Similar to Javadoc since.</description>
        </field>
        <field>
          <name>deprecated</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>
            Specify the version when the Mojo was deprecated to the API. Similar to Javadoc deprecated. This will
            trigger a warning when a user tries to configure a parameter marked as deprecated.
          </description>
        </field>
        <field>
          <name>configurator</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>
            The configurator type to use when injecting parameter values into this Mojo. The value is normally deduced
            from the Mojo's implementation language, but can be specified to allow a custom ComponentConfigurator
            implementation to be used.
          </description>
        </field>
        <field>
          <name>composer</name>
          <version>1.0.0</version>
          <type>String</type>
          <description></description>
        </field>
        <field xdoc.separator="blank">
          <name>parameters</name>
          <version>1.0.0</version>
          <description></description>
          <association>
            <type>Parameter</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
        <field>
          <name>configuration</name>
          <version>1.0.0</version>
          <description></description>
          <association xml.tagName="paramName">
            <type>Configuration</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
        <field xdoc.separator="blank">
          <name>requirements</name>
          <version>1.0.0</version>
          <description></description>
          <association>
            <type>Requirement</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
      </fields>
    </class>

    <class>
      <name>Parameter</name>
      <version>1.0.0</version>
      <description>A phase mapping definition.</description>
      <!-- see o.a.m.plugin.descriptor.Parameter -->
      <fields>
        <field>
          <name>name</name>
          <version>1.0.0</version>
          <type>String</type>
          <required>true</required>
          <description>
            The name of the parameter, to be used while configuring this parameter from the Mojo's declared defaults
            or from the POM.
          </description>
        </field>
        <field>
          <name>alias</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>
            Specifies an alias which can be used to configure this parameter from the POM.
            This is primarily useful to improve user-friendliness, where Mojo field names are not intuitive to the
            user or are otherwise not conducive to configuration via the POM.
          </description>
        </field>
        <field>
          <name>type</name>
          <version>1.0.0</version>
          <type>String</type>
          <required>true</required>
          <description>
            The Java type for this parameter. This is used to validate the result of any expressions used to calculate
            the value which should be injected into the Mojo for this parameter.
          </description>
        </field>
        <field>
          <name>required</name>
          <version>1.0.0</version>
          <type>boolean</type>
          <description>
            Whether this parameter is required for the Mojo to function. This is used to validate the configuration
            for a Mojo before it is injected, and before the Mojo is executed from some half-state.
          </description>
        </field>
        <field>
          <name>editable</name>
          <version>1.0.0</version>
          <type>boolean</type>
          <defaultValue>true</defaultValue>
          <description><![CDATA[
            Specifies that this parameter can be configured directly by the user (as in the case of POM-specified
            configuration). This is useful when you want to force the user to use common POM elements rather than
            plugin configurations, as in the case where you want to use the artifact's final name as a parameter. In
            this case, you want the user to modify <code>&lt;build&gt;&lt;finalName/&gt;&lt;/build&gt;</code> rather
            than specifying a value for finalName directly in the plugin configuration section. It is also useful to
            ensure that - for example - a List-typed parameter which expects items of type Artifact doesn't get a List
            full of Strings.
          ]]></description>
        </field>
        <field>
          <name>implementation</name>
          <version>1.0.0</version>
          <type>String</type>
          <description></description>
        </field>
        <field>
          <name>description</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>The description of this parameter's use inside the Mojo.</description>
        </field>
        <field>
          <name>since</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>Specify the version when the parameter was added to the API. Similar to Javadoc since.</description>
        </field>
        <field>
          <name>deprecated</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>
            Specify the version when the parameter was deprecated to the API. Similar to Javadoc deprecated.
            This will trigger a warning when a user tries to configure a parameter marked as deprecated.
          </description>
        </field>
      </fields>
    </class>

    <class>
      <name>Configuration</name>
      <version>1.0.0</version>
      <description>A parameter configuration.</description>
      <!-- see o.a.m.plugin.descriptor.Parameter -->
      <fields>
        <field xml.content="true">
          <name>expression</name>
          <required>true</required>
          <version>1.0.0</version>
          <type>String</type>
          <description>Parameter expression, to let user override default value with a system property, pom property or settings property.</description>
        </field>
        <field xml.attribute="true" xml.tagName="implementation">
          <name>implementation</name>
          <version>1.0.0</version>
          <type>String</type>
          <description></description>
        </field>
        <field xml.attribute="true" xml.tagName="default-value">
          <name>defaultValue</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>The default value, as an expression that will be evaluated at injection or run-time.</description>
        </field>
      </fields>
    </class>

    <class>
      <name>Requirement</name>
      <version>1.0.0</version>
      <description>Describes a component requirement.</description>
      <!-- see o.a.m.plugin.descriptor.Requirement -->
      <fields>
        <field>
          <name>role</name>
          <required>true</required>
          <version>1.0.0</version>
          <type>String</type>
          <description></description>
        </field>
        <field xml.tagName="role-hint">
          <name>roleHint</name>
          <version>1.0.0</version>
          <type>String</type>
          <description></description>
        </field>
        <field xml.tagName="field-name">
          <name>fieldName</name>
          <required>true</required>
          <version>1.0.0</version>
          <type>String</type>
          <description>The field name which has this requirement.</description>
        </field>
      </fields>
    </class>

    <class>
      <name>Dependency</name>
      <version>1.0.0</version>
      <description>Definition of a dependency, needed by the plugin at runtime.</description>
      <fields>
        <field>
          <name>groupId</name>
          <required>true</required>
          <version>1.0.0</version>
          <type>String</type>
          <description>The group id of the dependency.</description>
        </field>
        <field>
          <name>artifactId</name>
          <required>true</required>
          <version>1.0.0</version>
          <type>String</type>
          <description>The artifact id of the dependency.</description>
        </field>
        <field>
          <name>version</name>
          <version>1.0.0</version>
          <type>String</type>
          <description>The version of the dependency.</description>
        </field>
        <field>
          <name>type</name>
          <version>1.0.0</version>
          <type>String</type>
          <defaultValue>jar</defaultValue>
          <description>The type of dependency.</description>
        </field>
      </fields>
    </class>
  </classes>
</model>