This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch MPLUGIN-495
in repository https://gitbox.apache.org/repos/asf/maven-plugin-tools.git

commit a5048630c6a6f9bdd0358cfb49fa46da1c7ad3f8
Author: Michael Osipov <micha...@apache.org>
AuthorDate: Wed Dec 27 22:42:28 2023 +0100

    [MPLUGIN-495] WARNINGs based on usage of @Component for 
MavenSession/MavenProject instead of @Parameter
    
    This closes #253
---
 .../it/java-basic-annotations-jdk8/verify.groovy   | 80 ++++----------------
 .../verify.groovy                                  | 80 ++++----------------
 .../src/it/java-basic-annotations/verify.groovy    | 80 ++++----------------
 .../verify.groovy                                  |  2 +-
 maven-plugin-plugin/src/it/v4api/verify.groovy     | 86 +++++-----------------
 .../EnhancedPluginDescriptorBuilder.java           | 13 ++--
 .../JavaAnnotationsMojoDescriptorExtractor.java    | 23 +-----
 .../maven/tools/plugin/util/PluginUtils.java       | 32 --------
 .../JavaJavadocMojoDescriptorExtractor.java        | 24 +-----
 9 files changed, 76 insertions(+), 344 deletions(-)

diff --git 
a/maven-plugin-plugin/src/it/java-basic-annotations-jdk8/verify.groovy 
b/maven-plugin-plugin/src/it/java-basic-annotations-jdk8/verify.groovy
index 80db3ce7..7c482821 100644
--- a/maven-plugin-plugin/src/it/java-basic-annotations-jdk8/verify.groovy
+++ b/maven-plugin-plugin/src/it/java-basic-annotations-jdk8/verify.groovy
@@ -53,33 +53,28 @@ assert mojo.configuration.touchFile[0].text() == 
'${first.touchFile}'
 assert mojo.configuration.touchFile[0].'@implementation' == 'java.io.File'
 assert mojo.configuration.touchFile[0].'@default-value' == 
'${project.build.directory}/touch.txt'
 
-assert mojo.configuration.session[0].text() == ''
-assert mojo.configuration.session[0].'@implementation' == 
'org.apache.maven.execution.MavenSession'
-assert mojo.configuration.session[0].'@default-value' == '${session}'
+assert mojo.requirements.requirement.size() == 6
 
-assert mojo.configuration.project[0].text() == ''
-assert mojo.configuration.project[0].'@implementation' == 
'org.apache.maven.project.MavenProject'
-assert mojo.configuration.project[0].'@default-value' == '${project}'
+assert mojo.requirements.requirement[0].role.text() == 
'org.apache.maven.plugin.MojoExecution'
+assert mojo.requirements.requirement[0].'field-name'.text() == 'mojo'
 
-assert mojo.configuration.mojo[0].text() == ''
-assert mojo.configuration.mojo[0].'@implementation' == 
'org.apache.maven.plugin.MojoExecution'
-assert mojo.configuration.mojo[0].'@default-value' == '${mojoExecution}'
+assert mojo.requirements.requirement[1].role.text() == 
'org.apache.maven.plugin.descriptor.PluginDescriptor'
+assert mojo.requirements.requirement[1].'field-name'.text() == 'plugin'
 
-assert mojo.configuration.plugin[0].text() == ''
-assert mojo.configuration.plugin[0].'@implementation' == 
'org.apache.maven.plugin.descriptor.PluginDescriptor'
-assert mojo.configuration.plugin[0].'@default-value' == '${plugin}'
+assert mojo.requirements.requirement[2].role.text() == 
'org.apache.maven.project.MavenProject'
+assert mojo.requirements.requirement[2].'field-name'.text() == 'project'
 
-assert mojo.configuration.settings[0].text() == ''
-assert mojo.configuration.settings[0].'@implementation' == 
'org.apache.maven.settings.Settings'
-assert mojo.configuration.settings[0].'@default-value' == '${settings}'
+assert mojo.requirements.requirement[3].role.text() == 
'org.apache.maven.project.MavenProjectHelper'
+assert mojo.requirements.requirement[3].'role-hint'.text() == 'test'
+assert mojo.requirements.requirement[3].'field-name'.text() == 'projectHelper'
 
-assert mojo.requirements.requirement.size() == 1
+assert mojo.requirements.requirement[4].role.text() == 
'org.apache.maven.execution.MavenSession'
+assert mojo.requirements.requirement[4].'field-name'.text() == 'session'
 
-assert mojo.requirements.requirement[0].role.text() == 
'org.apache.maven.project.MavenProjectHelper'
-assert mojo.requirements.requirement[0].'role-hint'.text() == 'test'
-assert mojo.requirements.requirement[0].'field-name'.text() == 'projectHelper'
+assert mojo.requirements.requirement[5].role.text() == 
'org.apache.maven.settings.Settings'
+assert mojo.requirements.requirement[5].'field-name'.text() == 'settings'
 
-assert mojo.parameters.parameter.size() == 8
+assert mojo.parameters.parameter.size() == 3
 
 parameter = mojo.parameters.parameter.findAll{ it.name.text() == "namedParam" 
}[0]
 assert parameter.name.text() == 'namedParam'
@@ -99,51 +94,6 @@ assert parameter.required.text() == 'false'
 assert parameter.editable.text() == 'false'
 assert parameter.description.text() == 'Project directory.'
 
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "mojo" }[0]
-assert parameter.name.text() == 'mojo'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.plugin.MojoExecution'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "plugin" }[0]
-assert parameter.name.text() == 'plugin'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 
'org.apache.maven.plugin.descriptor.PluginDescriptor'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "project" }[0]
-assert parameter.name.text() == 'project'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.project.MavenProject'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "session" }[0]
-assert parameter.name.text() == 'session'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.execution.MavenSession'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "settings" 
}[0]
-assert parameter.name.text() == 'settings'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.settings.Settings'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
 parameter = mojo.parameters.parameter.findAll{ it.name.text() == "touchFile" 
}[0]
 assert parameter.name.text() == 'touchFile'
 assert parameter.alias.isEmpty()
diff --git 
a/maven-plugin-plugin/src/it/java-basic-annotations-jdkcurrent/verify.groovy 
b/maven-plugin-plugin/src/it/java-basic-annotations-jdkcurrent/verify.groovy
index e102e813..c42f2365 100644
--- a/maven-plugin-plugin/src/it/java-basic-annotations-jdkcurrent/verify.groovy
+++ b/maven-plugin-plugin/src/it/java-basic-annotations-jdkcurrent/verify.groovy
@@ -53,33 +53,28 @@ assert mojo.configuration.touchFile[0].text() == 
'${first.touchFile}'
 assert mojo.configuration.touchFile[0].'@implementation' == 'java.io.File'
 assert mojo.configuration.touchFile[0].'@default-value' == 
'${project.build.directory}/touch.txt'
 
-assert mojo.configuration.session[0].text() == ''
-assert mojo.configuration.session[0].'@implementation' == 
'org.apache.maven.execution.MavenSession'
-assert mojo.configuration.session[0].'@default-value' == '${session}'
+assert mojo.requirements.requirement.size() == 6
 
-assert mojo.configuration.project[0].text() == ''
-assert mojo.configuration.project[0].'@implementation' == 
'org.apache.maven.project.MavenProject'
-assert mojo.configuration.project[0].'@default-value' == '${project}'
+assert mojo.requirements.requirement[0].role.text() == 
'org.apache.maven.plugin.MojoExecution'
+assert mojo.requirements.requirement[0].'field-name'.text() == 'mojo'
 
-assert mojo.configuration.mojo[0].text() == ''
-assert mojo.configuration.mojo[0].'@implementation' == 
'org.apache.maven.plugin.MojoExecution'
-assert mojo.configuration.mojo[0].'@default-value' == '${mojoExecution}'
+assert mojo.requirements.requirement[1].role.text() == 
'org.apache.maven.plugin.descriptor.PluginDescriptor'
+assert mojo.requirements.requirement[1].'field-name'.text() == 'plugin'
 
-assert mojo.configuration.plugin[0].text() == ''
-assert mojo.configuration.plugin[0].'@implementation' == 
'org.apache.maven.plugin.descriptor.PluginDescriptor'
-assert mojo.configuration.plugin[0].'@default-value' == '${plugin}'
+assert mojo.requirements.requirement[2].role.text() == 
'org.apache.maven.project.MavenProject'
+assert mojo.requirements.requirement[2].'field-name'.text() == 'project'
 
-assert mojo.configuration.settings[0].text() == ''
-assert mojo.configuration.settings[0].'@implementation' == 
'org.apache.maven.settings.Settings'
-assert mojo.configuration.settings[0].'@default-value' == '${settings}'
+assert mojo.requirements.requirement[3].role.text() == 
'org.apache.maven.project.MavenProjectHelper'
+assert mojo.requirements.requirement[3].'role-hint'.text() == 'test'
+assert mojo.requirements.requirement[3].'field-name'.text() == 'projectHelper'
 
-assert mojo.requirements.requirement.size() == 1
+assert mojo.requirements.requirement[4].role.text() == 
'org.apache.maven.execution.MavenSession'
+assert mojo.requirements.requirement[4].'field-name'.text() == 'session'
 
-assert mojo.requirements.requirement[0].role.text() == 
'org.apache.maven.project.MavenProjectHelper'
-assert mojo.requirements.requirement[0].'role-hint'.text() == 'test'
-assert mojo.requirements.requirement[0].'field-name'.text() == 'projectHelper'
+assert mojo.requirements.requirement[5].role.text() == 
'org.apache.maven.settings.Settings'
+assert mojo.requirements.requirement[5].'field-name'.text() == 'settings'
 
-assert mojo.parameters.parameter.size() == 8
+assert mojo.parameters.parameter.size() == 3
 
 parameter = mojo.parameters.parameter.findAll{ it.name.text() == "namedParam" 
}[0]
 assert parameter.name.text() == 'namedParam'
@@ -99,51 +94,6 @@ assert parameter.required.text() == 'false'
 assert parameter.editable.text() == 'false'
 assert parameter.description.text() == 'Project directory.'
 
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "mojo" }[0]
-assert parameter.name.text() == 'mojo'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.plugin.MojoExecution'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "plugin" }[0]
-assert parameter.name.text() == 'plugin'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 
'org.apache.maven.plugin.descriptor.PluginDescriptor'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "project" }[0]
-assert parameter.name.text() == 'project'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.project.MavenProject'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "session" }[0]
-assert parameter.name.text() == 'session'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.execution.MavenSession'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "settings" 
}[0]
-assert parameter.name.text() == 'settings'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.settings.Settings'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
 parameter = mojo.parameters.parameter.findAll{ it.name.text() == "touchFile" 
}[0]
 assert parameter.name.text() == 'touchFile'
 assert parameter.alias.isEmpty()
diff --git a/maven-plugin-plugin/src/it/java-basic-annotations/verify.groovy 
b/maven-plugin-plugin/src/it/java-basic-annotations/verify.groovy
index a921bee3..61953831 100644
--- a/maven-plugin-plugin/src/it/java-basic-annotations/verify.groovy
+++ b/maven-plugin-plugin/src/it/java-basic-annotations/verify.groovy
@@ -56,33 +56,28 @@ assert mojo.configuration.touchFile[0].text() == 
'${first.touchFile}'
 assert mojo.configuration.touchFile[0].'@implementation' == 'java.io.File'
 assert mojo.configuration.touchFile[0].'@default-value' == 
'${project.build.directory}/touch.txt'
 
-assert mojo.configuration.session[0].text() == ''
-assert mojo.configuration.session[0].'@implementation' == 
'org.apache.maven.execution.MavenSession'
-assert mojo.configuration.session[0].'@default-value' == '${session}'
+assert mojo.requirements.requirement.size() == 6
 
-assert mojo.configuration.project[0].text() == ''
-assert mojo.configuration.project[0].'@implementation' == 
'org.apache.maven.project.MavenProject'
-assert mojo.configuration.project[0].'@default-value' == '${project}'
+assert mojo.requirements.requirement[0].role.text() == 
'org.apache.maven.plugin.MojoExecution'
+assert mojo.requirements.requirement[0].'field-name'.text() == 'mojo'
 
-assert mojo.configuration.mojo[0].text() == ''
-assert mojo.configuration.mojo[0].'@implementation' == 
'org.apache.maven.plugin.MojoExecution'
-assert mojo.configuration.mojo[0].'@default-value' == '${mojoExecution}'
+assert mojo.requirements.requirement[1].role.text() == 
'org.apache.maven.plugin.descriptor.PluginDescriptor'
+assert mojo.requirements.requirement[1].'field-name'.text() == 'plugin'
 
-assert mojo.configuration.plugin[0].text() == ''
-assert mojo.configuration.plugin[0].'@implementation' == 
'org.apache.maven.plugin.descriptor.PluginDescriptor'
-assert mojo.configuration.plugin[0].'@default-value' == '${plugin}'
+assert mojo.requirements.requirement[2].role.text() == 
'org.apache.maven.project.MavenProject'
+assert mojo.requirements.requirement[2].'field-name'.text() == 'project'
 
-assert mojo.configuration.settings[0].text() == ''
-assert mojo.configuration.settings[0].'@implementation' == 
'org.apache.maven.settings.Settings'
-assert mojo.configuration.settings[0].'@default-value' == '${settings}'
+assert mojo.requirements.requirement[3].role.text() == 
'org.apache.maven.project.MavenProjectHelper'
+assert mojo.requirements.requirement[3].'role-hint'.text() == 'test'
+assert mojo.requirements.requirement[3].'field-name'.text() == 'projectHelper'
 
-assert mojo.requirements.requirement.size() == 1
+assert mojo.requirements.requirement[4].role.text() == 
'org.apache.maven.execution.MavenSession'
+assert mojo.requirements.requirement[4].'field-name'.text() == 'session'
 
-assert mojo.requirements.requirement[0].role.text() == 
'org.apache.maven.project.MavenProjectHelper'
-assert mojo.requirements.requirement[0].'role-hint'.text() == 'test'
-assert mojo.requirements.requirement[0].'field-name'.text() == 'projectHelper'
+assert mojo.requirements.requirement[5].role.text() == 
'org.apache.maven.settings.Settings'
+assert mojo.requirements.requirement[5].'field-name'.text() == 'settings'
 
-assert mojo.parameters.parameter.size() == 8
+assert mojo.parameters.parameter.size() == 3
 
 parameter = mojo.parameters.parameter.findAll{ it.name.text() == "namedParam" 
}[0]
 assert parameter.name.text() == 'namedParam'
@@ -102,51 +97,6 @@ assert parameter.required.text() == 'false'
 assert parameter.editable.text() == 'false'
 assert parameter.description.text() == 'Project directory.'
 
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "mojo" }[0]
-assert parameter.name.text() == 'mojo'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.plugin.MojoExecution'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "plugin" }[0]
-assert parameter.name.text() == 'plugin'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 
'org.apache.maven.plugin.descriptor.PluginDescriptor'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "project" }[0]
-assert parameter.name.text() == 'project'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.project.MavenProject'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "session" }[0]
-assert parameter.name.text() == 'session'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.execution.MavenSession'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "settings" 
}[0]
-assert parameter.name.text() == 'settings'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.settings.Settings'
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
 parameter = mojo.parameters.parameter.findAll{ it.name.text() == "touchFile" 
}[0]
 assert parameter.name.text() == 'touchFile'
 assert parameter.alias.isEmpty()
diff --git 
a/maven-plugin-plugin/src/it/mplugin-305_defaultMojoDependencies/verify.groovy 
b/maven-plugin-plugin/src/it/mplugin-305_defaultMojoDependencies/verify.groovy
index 642fb98c..3ad89eb5 100644
--- 
a/maven-plugin-plugin/src/it/mplugin-305_defaultMojoDependencies/verify.groovy
+++ 
b/maven-plugin-plugin/src/it/mplugin-305_defaultMojoDependencies/verify.groovy
@@ -23,6 +23,6 @@ assert descriptorFile.isFile()
 def pluginDescriptor = new XmlParser().parse( descriptorFile );
 
 assert pluginDescriptor.mojos.mojo.size() == 1
-assert pluginDescriptor.mojos.mojo.parameters.parameter.size() == 50
+assert pluginDescriptor.mojos.mojo.parameters.parameter.size() == 48
 
 return true;
diff --git a/maven-plugin-plugin/src/it/v4api/verify.groovy 
b/maven-plugin-plugin/src/it/v4api/verify.groovy
index 5ce732ad..1405e231 100644
--- a/maven-plugin-plugin/src/it/v4api/verify.groovy
+++ b/maven-plugin-plugin/src/it/v4api/verify.groovy
@@ -53,23 +53,7 @@ assert mojo.configuration.touchFile[0].text() == 
'${first.touchFile}'
 assert mojo.configuration.touchFile[0].'@implementation' == 
'java.nio.file.Path'
 assert mojo.configuration.touchFile[0].'@default-value' == 
'${project.build.directory}/touch.txt'
 
-assert mojo.configuration.session[0].text() == ''
-assert mojo.configuration.session[0].'@implementation' == 
'org.apache.maven.api.Session'
-assert mojo.configuration.session[0].'@default-value' == '${session}'
-
-assert mojo.configuration.project[0].text() == ''
-assert mojo.configuration.project[0].'@implementation' == 
'org.apache.maven.api.Project'
-assert mojo.configuration.project[0].'@default-value' == '${project}'
-
-assert mojo.configuration.mojo[0].text() == ''
-assert mojo.configuration.mojo[0].'@implementation' == 
'org.apache.maven.api.MojoExecution'
-assert mojo.configuration.mojo[0].'@default-value' == '${mojoExecution}'
-
-assert mojo.configuration.settings[0].text() == ''
-assert mojo.configuration.settings[0].'@implementation' == 
'org.apache.maven.api.settings.Settings'
-assert mojo.configuration.settings[0].'@default-value' == '${settings}'
-
-assert mojo.requirements.requirement.size() == 2
+assert mojo.requirements.requirement.size() == 6
 
 assert mojo.requirements.requirement[0].role.text() == 
'org.apache.maven.api.services.ArtifactInstaller'
 assert mojo.requirements.requirement[0].'role-hint'.text() == 'test'
@@ -79,7 +63,23 @@ assert mojo.requirements.requirement[1].role.text() == 
'org.apache.maven.api.plu
 assert mojo.requirements.requirement[1].'role-hint'.isEmpty()
 assert mojo.requirements.requirement[1].'field-name'.text() == 'log'
 
-assert mojo.parameters.parameter.size() == 7
+assert mojo.requirements.requirement[2].role.text() == 
'org.apache.maven.api.MojoExecution'
+assert mojo.requirements.requirement[2].'role-hint'.isEmpty()
+assert mojo.requirements.requirement[2].'field-name'.text() == 'mojo'
+
+assert mojo.requirements.requirement[3].role.text() == 
'org.apache.maven.api.Project'
+assert mojo.requirements.requirement[3].'role-hint'.isEmpty()
+assert mojo.requirements.requirement[3].'field-name'.text() == 'project'
+
+assert mojo.requirements.requirement[4].role.text() == 
'org.apache.maven.api.Session'
+assert mojo.requirements.requirement[4].'role-hint'.isEmpty()
+assert mojo.requirements.requirement[4].'field-name'.text() == 'session'
+
+assert mojo.requirements.requirement[5].role.text() == 
'org.apache.maven.api.settings.Settings'
+assert mojo.requirements.requirement[5].'role-hint'.isEmpty()
+assert mojo.requirements.requirement[5].'field-name'.text() == 'settings'
+
+assert mojo.parameters.parameter.size() == 3
 
 parameter = mojo.parameters.parameter.findAll{ it.name.text() == "basedir" }[0]
 assert parameter.name.text() == 'basedir'
@@ -101,16 +101,6 @@ assert parameter.required.text() == 'true'
 assert parameter.editable.text() == 'true'
 assert parameter.description.text() == ''
 
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "mojo" }[0]
-assert parameter.name.text() == 'mojo'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.api.MojoExecution'
-assert parameter.since.isEmpty()
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
 parameter = mojo.parameters.parameter.findAll{ it.name.text() == "namedParam" 
}[0]
 assert parameter.name.text() == 'namedParam'
 assert parameter.alias.text() == 'alias'
@@ -121,46 +111,6 @@ assert parameter.required.text() == 'false'
 assert parameter.editable.text() == 'true'
 assert parameter.description.text() == ''
 
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "session" }[0]
-assert parameter.name.text() == 'session'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.api.Session'
-assert parameter.since.isEmpty()
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "project" }[0]
-assert parameter.name.text() == 'project'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.api.Project'
-assert parameter.since.isEmpty()
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "mojo" }[0]
-assert parameter.name.text() == 'mojo'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.api.MojoExecution'
-assert parameter.since.isEmpty()
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
-parameter = mojo.parameters.parameter.findAll{ it.name.text() == "settings" 
}[0]
-assert parameter.name.text() == 'settings'
-assert parameter.alias.isEmpty()
-assert parameter.type.text() == 'org.apache.maven.api.settings.Settings'
-assert parameter.since.isEmpty()
-assert parameter.deprecated.isEmpty()
-assert parameter.required.text() == 'true'
-assert parameter.editable.text() == 'false'
-assert parameter.description.text() == ''
-
 // check help mojo source and class
 assert new File( basedir, 
"target/classes/org/apache/maven/its/v4api/HelpMojo.class" ).isFile()
 assert new File( basedir, 
"target/generated-sources/plugin/org/apache/maven/its/v4api/HelpMojo.java" 
).isFile()
diff --git 
a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugins/plugin/descriptor/EnhancedPluginDescriptorBuilder.java
 
b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugins/plugin/descriptor/EnhancedPluginDescriptorBuilder.java
index c9e30570..2defbfca 100644
--- 
a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugins/plugin/descriptor/EnhancedPluginDescriptorBuilder.java
+++ 
b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugins/plugin/descriptor/EnhancedPluginDescriptorBuilder.java
@@ -21,9 +21,11 @@ package org.apache.maven.plugins.plugin.descriptor;
 import java.io.Reader;
 import java.net.URI;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.Parameter;
@@ -87,7 +89,8 @@ public class EnhancedPluginDescriptorBuilder extends 
PluginDescriptorBuilder {
 
         PlexusConfiguration[] parameterConfigurations = 
c.getChild("parameters").getChildren("parameter");
 
-        List<Parameter> parameters = new 
ArrayList<>(mojoDescriptor.getParameters());
+        List<Parameter> parameters = new ArrayList<>(
+                
Optional.ofNullable(mojoDescriptor.getParameters()).orElseGet(Collections::emptyList));
         Map<String, Parameter> parameterMap = new 
LinkedHashMap<>(mojoDescriptor.getParameterMap());
 
         for (PlexusConfiguration d : parameterConfigurations) {
@@ -107,12 +110,12 @@ public class EnhancedPluginDescriptorBuilder extends 
PluginDescriptorBuilder {
             }
         }
 
-        // clear() is required for maven < 3.6.2
-        mojoDescriptor.getParameters().clear();
+        // TODO The upcoming cruft has been resolved in maven-4.0.0-alpha-1 
with MNG-6776
+        if (mojoDescriptor.getParameters() != null) {
+            mojoDescriptor.getParameters().clear();
+        }
         // set parameters
         mojoDescriptor.setParameters(parameters);
-        // on maven < 3.6.2, getParameterMap is kept internally in a field
-        // so update it in case we're on an old maven version
         mojoDescriptor.getParameterMap().putAll(parameterMap);
 
         return mojoDescriptor;
diff --git 
a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java
 
b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java
index a541969b..386e73f9 100644
--- 
a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java
+++ 
b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java
@@ -75,7 +75,6 @@ import 
org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotated
 import 
org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotationsScanner;
 import 
org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotationsScannerRequest;
 import org.apache.maven.tools.plugin.javadoc.JavadocLinkGenerator;
-import org.apache.maven.tools.plugin.util.PluginUtils;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.UnArchiver;
 import org.codehaus.plexus.archiver.manager.ArchiverManager;
@@ -780,28 +779,12 @@ public class JavaAnnotationsMojoDescriptorExtractor 
extends AbstractLogEnabled i
                         new org.apache.maven.plugin.descriptor.Parameter();
                 parameter.setName(componentAnnotationContent.getFieldName());
 
-                // recognize Maven-injected objects as components annotations 
instead of parameters
-                String expression = 
PluginUtils.MAVEN_COMPONENTS.get(componentAnnotationContent.getRoleClassName());
-                if (expression == null) {
-                    // normal component
-                    parameter.setRequirement(new Requirement(
-                            componentAnnotationContent.getRoleClassName(), 
componentAnnotationContent.hint()));
-                } else {
-                    // not a component but a Maven object to be transformed 
into an expression/property: deprecated
-                    getLogger()
-                            .warn("Deprecated @Component annotation for '" + 
parameter.getName() + "' field in "
-                                    + mojoAnnotatedClass.getClassName()
-                                    + ": replace with @Parameter( defaultValue 
= \"" + expression
-                                    + "\", readonly = true )");
-                    parameter.setDefaultValue(expression);
-                    
parameter.setType(componentAnnotationContent.getRoleClassName());
-                    parameter.setRequired(true);
-                }
+                parameter.setRequirement(new Requirement(
+                        componentAnnotationContent.getRoleClassName(), 
componentAnnotationContent.hint()));
                 
parameter.setDeprecated(componentAnnotationContent.getDeprecated());
                 parameter.setSince(componentAnnotationContent.getSince());
 
-                // same behaviour as JavaMojoDescriptorExtractor
-                // parameter.setRequired( ... );
+                // same behaviour as JavaJavadocMojoDescriptorExtractor
                 parameter.setEditable(false);
 
                 mojoDescriptor.addParameter(parameter);
diff --git 
a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/util/PluginUtils.java
 
b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/util/PluginUtils.java
index 4aa62ae7..98b764bb 100644
--- 
a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/util/PluginUtils.java
+++ 
b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/util/PluginUtils.java
@@ -25,9 +25,7 @@ import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
@@ -49,36 +47,6 @@ public final class PluginUtils {
         // nop
     }
 
-    /**
-     * Expression associated with class types to recognize Maven objects 
(injected in fact as parameters by <a
-     * 
href="/ref/current/maven-core/apidocs/org/apache/maven/plugin/PluginParameterExpressionEvaluator.html">
-     * maven-core's PluginParameterExpressionEvaluator</a>) like components 
("real" components are injected by Plexus).
-     *
-     * @deprecated wrong approach (fake components), documented parameter 
default values instead to learn people how to
-     *             discover them
-     */
-    @Deprecated
-    public static final Map<String, String> MAVEN_COMPONENTS;
-
-    static {
-        Map<String, String> mavenComponents = new HashMap<>();
-
-        mavenComponents.put("org.apache.maven.execution.MavenSession", 
"${session}");
-        mavenComponents.put("org.apache.maven.project.MavenProject", 
"${project}");
-        mavenComponents.put("org.apache.maven.plugin.MojoExecution", 
"${mojoExecution}");
-        
mavenComponents.put("org.apache.maven.plugin.descriptor.PluginDescriptor", 
"${plugin}");
-        mavenComponents.put("org.apache.maven.settings.Settings", 
"${settings}");
-
-        mavenComponents.put("org.apache.maven.api.Session", "${session}");
-        mavenComponents.put("org.apache.maven.api.Project", "${project}");
-        mavenComponents.put("org.apache.maven.api.MojoExecution", 
"${mojoExecution}");
-        // TODO: apiv4: add PluginDescriptor to the api ?
-        // mavenComponents.put( 
"org.apache.maven.api.descriptor.PluginDescriptor", "${plugin}" );
-        mavenComponents.put("org.apache.maven.api.settings.Settings", 
"${settings}");
-
-        MAVEN_COMPONENTS = Collections.unmodifiableMap(mavenComponents);
-    }
-
     /**
      * @param basedir not null
      * @param include not null
diff --git 
a/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/javadoc/JavaJavadocMojoDescriptorExtractor.java
 
b/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/javadoc/JavaJavadocMojoDescriptorExtractor.java
index aba7cc20..5c5437b1 100644
--- 
a/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/javadoc/JavaJavadocMojoDescriptorExtractor.java
+++ 
b/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/javadoc/JavaJavadocMojoDescriptorExtractor.java
@@ -49,7 +49,6 @@ import org.apache.maven.tools.plugin.PluginToolsRequest;
 import org.apache.maven.tools.plugin.extractor.ExtractionException;
 import org.apache.maven.tools.plugin.extractor.GroupKey;
 import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor;
-import org.apache.maven.tools.plugin.util.PluginUtils;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 /**
@@ -399,29 +398,8 @@ public class JavaJavadocMojoDescriptorExtractor extends 
AbstractLogEnabled
                     roleHint = componentTag.getNamedParameter("role-hint");
                 }
 
-                // recognize Maven-injected objects as components annotations 
instead of parameters
-                // Note: the expressions we are looking for, i.e. 
"${project}", are in the values of the Map,
-                // so the lookup mechanism is different here than in 
maven-plugin-tools-annotations
-                boolean isDeprecated = 
PluginUtils.MAVEN_COMPONENTS.containsValue(role);
-
-                if (!isDeprecated) {
-                    // normal component
-                    pd.setRequirement(new Requirement(role, roleHint));
-                } else {
-                    // not a component but a Maven object to be transformed 
into an expression/property
-                    getLogger()
-                            .warn("Deprecated @component Javadoc tag for '" + 
pd.getName() + "' field in "
-                                    + javaClass.getFullyQualifiedName()
-                                    + ": replace with @Parameter( defaultValue 
= \"" + role
-                                    + "\", readonly = true )");
-                    pd.setDefaultValue(role);
-                    pd.setRequired(true);
-                }
-
+                pd.setRequirement(new Requirement(role, roleHint));
                 pd.setEditable(false);
-                /* TODO: or better like this? Need @component fields be 
editable for the user?
-                pd.setEditable( field.getTagByName( READONLY ) == null );
-                */
             } else {
                 // Parameter tag
                 DocletTag parameter = 
field.getTagByName(JavadocMojoAnnotation.PARAMETER);


Reply via email to