gnodet-bot commented on code in PR #13253:
URL: https://github.com/apache/maven/pull/13253#discussion_r4085812423


##########
compat/maven-plugin-api/src/main/mdo/plugin.mdo:
##########
@@ -0,0 +1,538 @@
+<!--
+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";>
+  <id>plugin</id>
+  <name>PluginDescriptor</name>
+  <description><![CDATA[
+    Maven 3 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
+    <a 
href="apidocs/org/apache/maven/plugin/descriptor/PluginDescriptor.html"><code>PluginDescriptor</code></a>/<a
 
href="apidocs/org/apache/maven/plugin/descriptor/MojoDescriptor.html"><code>MojoDescriptor</code></a>
+    code executed is not generated from this model. Please report if you find 
anything wrong this documentation.</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" 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>
+        </field>
+        <field>
+          <name>goalPrefix</name>
+          <version>1.0.0</version>
+          <description>The prefix for the plugin's goal names as used on the 
command line (e.g. {@code compiler} for {@code compiler:compile}).</description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>isolatedRealm</name>
+          <version>1.0.0</version>
+          <description>If set to {@code true}, the plugin will be loaded in 
isolation; it will not share the class loader with other plugins. Defaults to 
{@code false}.</description>
+          <type>boolean</type>
+          <defaultValue>false</defaultValue>
+        </field>
+        <field>
+          <name>inheritedByDefault</name>
+          <version>1.0.0</version>
+          <description>If set to {@code true}, Mojos in this plugin are 
inherited by child projects by default. Defaults to {@code true}.</description>
+          <type>boolean</type>
+          <defaultValue>true</defaultValue>
+        </field>
+        <field>
+          <name>requiredJavaVersion</name>
+          <version>1.0.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 Used by Maven 4.0.0-alpha-3+ and 3.9.12+, generated by 
maven-plugin-tools 3.8.0+
+          </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</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 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.
+            &lt;p>&lt;b>Note:&lt;/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 
&lt;phase&gt;} element from the
+            surrounding {@code &lt;execution&gt;} element.&lt;/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>Specifies the name of a custom lifecycle to execute 
when this Mojo is forking execution (used together with {@code 
executePhase}).</description>
+        </field>
+        <field>
+          <name>requiresDependencyResolution</name>
+          <version>1.0.0</version>
+          <type>String</type>
+          <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</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</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>
+            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</version>
+          <type>String</type>
+          <description>The composer type for this Mojo, used to compose the 
Mojo instance. Normally deduced from the implementation language.</description>
+        </field>
+        <field xdoc.separator="blank">
+          <name>parameters</name>
+          <version>1.0.0</version>
+          <description>The list of parameters that can be used to configure 
this Mojo.</description>
+          <association>
+            <type>Parameter</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>configuration</name>
+          <version>1.0.0</version>
+          <description>Default parameter configuration values provided by the 
plugin for this Mojo.</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><![CDATA[
+            Deprecated: Component requirements (plugin tools {@code 
@Component} annotation), that will be injected to Mojo fields.
+            <a href="https://maven.apache.org/maven-jsr330.html";>Use JSR 330 
annotations</a> to inject components instead, without this descriptor.
+          ]]></description>
+          <association>
+            <type>Requirement</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+      </fields>
+    </class>
+
+    <class xdoc.anchorName="parameter">
+      <name>Parameter</name>
+      <version>1.0.0</version>
+      <description>A parameter description.</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 
&lt;build&gt;&lt;finalName/&gt;&lt;/build&gt;} 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>

Review Comment:
   💡 **Empty description on `Parameter.implementation`.** From the test 
resource `plugin.xml`, this field holds the fully-qualified Java type of the 
parameter (e.g. `java.lang.String`). The generated xdoc will show an empty 
description, leaving users with no hint about what to put here.
   
   ```suggestion
             <description>The fully-qualified Java type to use for this 
parameter, overriding the declared type. Rarely needed — only set when the 
plugin descriptor is generated from non-Java sources or when the runtime type 
must differ from the declared type.</description>
   ```



##########
compat/maven-plugin-api/src/main/mdo/plugin.mdo:
##########
@@ -0,0 +1,538 @@
+<!--
+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";>
+  <id>plugin</id>
+  <name>PluginDescriptor</name>
+  <description><![CDATA[
+    Maven 3 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
+    <a 
href="apidocs/org/apache/maven/plugin/descriptor/PluginDescriptor.html"><code>PluginDescriptor</code></a>/<a
 
href="apidocs/org/apache/maven/plugin/descriptor/MojoDescriptor.html"><code>MojoDescriptor</code></a>
+    code executed is not generated from this model. Please report if you find 
anything wrong this documentation.</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" 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>
+        </field>
+        <field>
+          <name>goalPrefix</name>
+          <version>1.0.0</version>
+          <description>The prefix for the plugin's goal names as used on the 
command line (e.g. {@code compiler} for {@code compiler:compile}).</description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>isolatedRealm</name>
+          <version>1.0.0</version>
+          <description>If set to {@code true}, the plugin will be loaded in 
isolation; it will not share the class loader with other plugins. Defaults to 
{@code false}.</description>
+          <type>boolean</type>
+          <defaultValue>false</defaultValue>
+        </field>
+        <field>
+          <name>inheritedByDefault</name>
+          <version>1.0.0</version>
+          <description>If set to {@code true}, Mojos in this plugin are 
inherited by child projects by default. Defaults to {@code true}.</description>
+          <type>boolean</type>
+          <defaultValue>true</defaultValue>
+        </field>
+        <field>
+          <name>requiredJavaVersion</name>
+          <version>1.0.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 Used by Maven 4.0.0-alpha-3+ and 3.9.12+, generated by 
maven-plugin-tools 3.8.0+
+          </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</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 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.
+            &lt;p>&lt;b>Note:&lt;/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 
&lt;phase&gt;} element from the
+            surrounding {@code &lt;execution&gt;} element.&lt;/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>Specifies the name of a custom lifecycle to execute 
when this Mojo is forking execution (used together with {@code 
executePhase}).</description>
+        </field>
+        <field>
+          <name>requiresDependencyResolution</name>
+          <version>1.0.0</version>
+          <type>String</type>
+          <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</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</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>
+            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</version>
+          <type>String</type>
+          <description>The composer type for this Mojo, used to compose the 
Mojo instance. Normally deduced from the implementation language.</description>
+        </field>
+        <field xdoc.separator="blank">
+          <name>parameters</name>
+          <version>1.0.0</version>
+          <description>The list of parameters that can be used to configure 
this Mojo.</description>
+          <association>
+            <type>Parameter</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>configuration</name>
+          <version>1.0.0</version>
+          <description>Default parameter configuration values provided by the 
plugin for this Mojo.</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><![CDATA[
+            Deprecated: Component requirements (plugin tools {@code 
@Component} annotation), that will be injected to Mojo fields.
+            <a href="https://maven.apache.org/maven-jsr330.html";>Use JSR 330 
annotations</a> to inject components instead, without this descriptor.
+          ]]></description>
+          <association>
+            <type>Requirement</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+      </fields>
+    </class>
+
+    <class xdoc.anchorName="parameter">
+      <name>Parameter</name>
+      <version>1.0.0</version>
+      <description>A parameter description.</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 
&lt;build&gt;&lt;finalName/&gt;&lt;/build&gt;} 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>
+            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>
+      </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 user property, system property or project property.</description>
+        </field>
+        <field xml.attribute="true" xml.tagName="implementation">
+          <name>implementation</name>
+          <version>1.0.0</version>
+          <type>String</type>
+          <description></description>

Review Comment:
   💡 **Empty description on `Configuration.implementation`.** This is the 
`implementation` attribute on the `<paramName>` element in the 
`<configuration>` block (e.g. `<finalName implementation="java.lang.String" 
...>`). Without a description, the generated xdoc is silent about its purpose.
   
   ```suggestion
             <description>Optional fully-qualified Java type used to convert 
the configuration value (expression or default value) into the target type at 
injection time.</description>
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to