From 8ea09718ceed496020a6ae6d38b0753cef7800d3 Mon Sep 17 00:00:00 2001 From: Michael Osipov Date: Wed, 27 Dec 2023 22:42:28 +0100 Subject: [PATCH] [MPLUGIN-495] WARNINGs based on usage of @Component for MavenSession/MavenProject instead of @Parameter This closes #253 --- .../java-basic-annotations-jdk8/verify.groovy | 80 ++++------------- .../verify.groovy | 80 ++++------------- .../it/java-basic-annotations/verify.groovy | 80 ++++------------- .../verify.groovy | 2 +- .../src/it/v4api/verify.groovy | 86 ++++--------------- .../EnhancedPluginDescriptorBuilder.java | 13 +-- ...avaAnnotationsMojoDescriptorExtractor.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..8d8c5c89 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 @@ 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 MojoDescriptor buildComponentDescriptor(PlexusConfiguration c, PluginDesc PlexusConfiguration[] parameterConfigurations = c.getChild("parameters").getChildren("parameter"); - List parameters = new ArrayList<>(mojoDescriptor.getParameters()); + List parameters = new ArrayList<>( + Optional.ofNullable(mojoDescriptor.getParameters()).orElseGet(Collections::emptyList)); Map parameterMap = new LinkedHashMap<>(mojoDescriptor.getParameterMap()); for (PlexusConfiguration d : parameterConfigurations) { @@ -107,12 +110,12 @@ public MojoDescriptor buildComponentDescriptor(PlexusConfiguration c, PluginDesc } } - // clear() is required for maven < 3.6.2 - mojoDescriptor.getParameters().clear(); + // TODO This 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.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 @@ private List toMojoDescriptors( 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.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 @@ private PluginUtils() { // nop } - /** - * Expression associated with class types to recognize Maven objects (injected in fact as parameters by - * maven-core's PluginParameterExpressionEvaluator) 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 MAVEN_COMPONENTS; - - static { - Map 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.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 @@ private void extractParameters(MojoDescriptor mojoDescriptor, JavaClass javaClas 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);