| <!-- |
| 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://codehaus-plexus.github.io/MODELLO/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://codehaus-plexus.github.io/MODELLO/2.0.0 https://codehaus-plexus.github.io/modello/xsd/modello-2.0.0.xsd" |
| xml.namespace="http://maven.apache.org/PLUGIN/${version}" |
| xml.schemaLocation="https://maven.apache.org/xsd/plugin-${version}.xsd"> |
| <id>plugin</id> |
| <name>PluginDescriptor</name> |
| <description><![CDATA[ |
| Maven 4 Plugin descriptor, stored in {@code META-INF/maven/plugin.xml} in a plugin's jar artifact. |
| This descriptor is generally using the information contained in the annotations of the plugin api. |
| <p>An XSD is available at <a href="https://maven.apache.org/xsd/plugin-2.0.0.xsd">https://maven.apache.org/xsd/plugin-2.0.0.xsd</a></p> |
| ]]></description> |
| <classes> |
| <class rootElement="true" xml.tagName="plugin" xdoc.anchorName="plugin"> |
| <name>PluginDescriptor</name> |
| <version>1.0.0+</version> |
| <description>Root element of the {@code plugin.xml} file.</description> |
| <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> |
| <required>true</required> |
| </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> |
| <required>true</required> |
| </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> |
| <name>requiredJavaVersion</name> |
| <version>1.1.0+</version> |
| <description> |
| A version range which specifies the supported Java versions. A version range can either use the usual mathematical syntax "[2.0.10,2.1.0),[3.0,)" or use a single version "2.2.1". The latter is a short form for "[2.2.1,)", i.e. denotes the minimum version required. |
| @since Maven 4.0.0-alpha-3 |
| </description> |
| <type>String</type> |
| </field> |
| <field> |
| <name>requiredMavenVersion</name> |
| <version>1.1.0+</version> |
| <description> |
| A version range which specifies the supported Maven versions. A version range can either use the usual mathematical syntax "[2.0.10,2.1.0),[3.0,)" or use a single version "2.2.1". The latter is a short form for "[2.2.1,)", i.e. denotes the minimum version required. This value takes precedence over the POMs Maven prerequisite. |
| @since Maven 4.0.0-alpha-3 |
| </description> |
| <type>String</type> |
| </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/1.1.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> |
| <codeSegments> |
| <codeSegment> |
| <version>2.0.0+</version> |
| <code><![CDATA[ |
| public String getPluginLookupKey() { |
| return groupId + ":" + artifactId; |
| } |
| |
| public String getId() { |
| return groupId + ":" + artifactId + ":" + version; |
| } |
| |
| ]]></code> |
| </codeSegment> |
| </codeSegments> |
| </class> |
| |
| <class xdoc.anchorName="mojo"> |
| <name>MojoDescriptor</name> |
| <version>1.0.0+</version> |
| <description>A Mojo description.</description> |
| <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> |
| Defines a default phase to bind a Mojo execution to if the user does not explicitly set a phase in the POM. |
| <p><b>Note:</b> 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 <phase>} element from the |
| surrounding {@code <execution>} element.</p> |
| </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/1.1.0</version> |
| <type>String</type> |
| <defaultValue>runtime</defaultValue> |
| <description> |
| Flags this Mojo as requiring the dependencies in the specified class path to be resolved before it can |
| execute: {@code compile}, {@code runtime}, {@code test}, |
| {@code compile+runtime} (since Maven 3.0) or {@code runtime+system} (since Maven 3.0) |
| </description> |
| </field> |
| <field> |
| <name>dependencyResolution</name> |
| <version>2.0.0+</version> |
| <type>String</type> |
| <defaultValue>runtime</defaultValue> |
| <description> |
| Flags this Mojo as requiring the dependencies in the specified class path to be resolved before it can |
| execute: {@code compile}, {@code runtime}, {@code test}, |
| {@code compile+runtime} (since Maven 3.0) or {@code runtime+system} (since Maven 3.0) |
| </description> |
| </field> |
| <field> |
| <name>requiresDependencyCollection</name> |
| <version>1.0.0/1.1.0</version> |
| <type>String</type> |
| <description> |
| 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>dependencyCollection</name> |
| <version>2.0.0+</version> |
| <type>String</type> |
| <description> |
| 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/1.1.0</version> |
| <type>boolean</type> |
| <description>Flags this Mojo to be invoked directly only.</description> |
| <defaultValue>false</defaultValue> |
| </field> |
| <field> |
| <name>directInvocationOnly</name> |
| <version>2.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/1.1.0</version> |
| <type>boolean</type> |
| <description>Flags this Mojo to require running inside of a project.</description> |
| <defaultValue>true</defaultValue> |
| </field> |
| <field> |
| <name>projectRequired</name> |
| <version>2.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><!-- no longer part of 1.1.0 --> |
| <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/1.1.0</version> |
| <type>boolean</type> |
| <description>Flags this Mojo to require online mode for its operation.</description> |
| <defaultValue>false</defaultValue> |
| </field> |
| <field> |
| <name>onlineRequired</name> |
| <version>2.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/1.1.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>v4Api</name> |
| <version>1.1.0</version> |
| <type>boolean</type> |
| <description>Marks this Mojo as using Maven 4 API. This makes the plugin implicitly incompatible with earlier Maven versions. Only evaluated since Maven 4.</description> |
| <defaultValue>false</defaultValue> |
| </field> |
| <field> |
| <name>instantiationStrategy</name> |
| <version>1.0.0/1.1.0</version> |
| <type>String</type> |
| <defaultValue>per-lookup</defaultValue> |
| <description>Specify the instantiation strategy.</description> |
| </field> |
| <field> |
| <name>executionStrategy</name> |
| <version>1.0.0/1.1.0</version> |
| <type>String</type> |
| <description> |
| Specify the execution strategy: {@code once-per-session}, {@code always}. |
| </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> |
| Description with the reason of Mojo deprecation. Similar to Javadoc {@code @deprecated} |
| This will trigger a warning when a user tries to use a Mojo 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/1.1.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 xdoc.separator="blank"> |
| <name>requirements</name> |
| <version>1.0.0/1.1.0</version> |
| <description></description> |
| <association> |
| <type>Requirement</type> |
| <multiplicity>*</multiplicity> |
| </association> |
| </field> |
| <field xml.format="((PluginDescriptor.Builder) context.peekLast()).build().getId() + ":" + mojoDescriptor.build().getGoal()"> |
| <name>id</name> |
| <version>2.0.0+</version> |
| <type>String</type> |
| <description>the id of the mojo, based on the goal name</description> |
| </field> |
| <field xml.format="((PluginDescriptor.Builder) context.peekLast()).build().getGoalPrefix() + ":" + mojoDescriptor.build().getGoal()"> |
| <name>fullGoalName</name> |
| <version>2.0.0+</version> |
| <type>String</type> |
| <description>the full goal name</description> |
| </field> |
| </fields> |
| </class> |
| |
| <class xdoc.anchorName="parameter"> |
| <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> |
| 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 <build><finalName/></build>} 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>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> |
| Description with the reason of parameter deprecation. Similar to Javadoc {@code @deprecated}. |
| This will trigger a warning when a user tries to configure a parameter marked as deprecated. |
| </description> |
| </field> |
| <field> |
| <name>expression</name> |
| <version>2.0.0+</version> |
| <type>String</type> |
| <description>Parameter expression, to let user override default value with a user property, system property or project property.</description> |
| </field> |
| <field> |
| <name>defaultValue</name> |
| <version>2.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 xdoc.anchorName="requirement"> |
| <name>Requirement</name> |
| <version>1.0.0/1.1.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 xdoc.anchorName="dependency"> |
| <name>Dependency</name> |
| <version>1.0.0/1.1.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> |