From 48339b9eebba5dc73bf7287464423f86202a12dd Mon Sep 17 00:00:00 2001 From: Michael Osipov Date: Sat, 25 Dec 2021 12:28:47 +0100 Subject: [PATCH] [MNG-5561] Plugin relocation loses configuration Previously, to locate plugin configuration in a project the plugin descriptor was read first and then the GA were extracted. This always worked because the GA from the model and the GA from plugin descriptor (plugin.xml) were identical. When a plugin is relocated the target artifact is read, thus its plugin descriptor as well. Naturally, the GA of new (relocated) does not correspond to the old (static) one in the model. Therefore, the configuration is not found. New approach is to use the original plugin GA to locate the configuration in the model regardless of the relocation. This closes #642 --- .../internal/DefaultMojoExecutionConfigurator.java | 4 ++-- .../lifecycle/internal/stub/BuildPluginManagerStub.java | 2 +- .../maven/lifecycle/internal/stub/MojoExecutorStub.java | 9 ++++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultMojoExecutionConfigurator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultMojoExecutionConfigurator.java index e650813f38b6..89db25bc64bb 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultMojoExecutionConfigurator.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultMojoExecutionConfigurator.java @@ -44,9 +44,9 @@ public class DefaultMojoExecutionConfigurator @Override public void configure( MavenProject project, MojoExecution mojoExecution, boolean allowPluginLevelConfig ) { - String g = mojoExecution.getGroupId(); + String g = mojoExecution.getPlugin().getGroupId(); - String a = mojoExecution.getArtifactId(); + String a = mojoExecution.getPlugin().getArtifactId(); Plugin plugin = findPlugin( g, a, project.getBuildPlugins() ); diff --git a/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/BuildPluginManagerStub.java b/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/BuildPluginManagerStub.java index 133bcb3a2137..cdb00fc02adf 100644 --- a/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/BuildPluginManagerStub.java +++ b/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/BuildPluginManagerStub.java @@ -42,7 +42,7 @@ public PluginDescriptor loadPlugin( Plugin plugin, List reposi public MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, List repositories, RepositorySystemSession session ) { - return MojoExecutorStub.createMojoDescriptor( plugin.getKey() ); + return MojoExecutorStub.createMojoDescriptor( plugin ); } public ClassRealm getPluginRealm( MavenSession session, PluginDescriptor pluginDescriptor ) diff --git a/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/MojoExecutorStub.java b/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/MojoExecutorStub.java index f0353510fc64..feedd1ed8266 100644 --- a/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/MojoExecutorStub.java +++ b/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/MojoExecutorStub.java @@ -25,6 +25,7 @@ import org.apache.maven.lifecycle.internal.ProjectIndex; import org.apache.maven.plugin.BuildPluginManager; import org.apache.maven.plugin.MavenPluginManager; +import org.apache.maven.model.Plugin; import org.apache.maven.plugin.MojoExecution; import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.PluginDescriptor; @@ -67,12 +68,14 @@ public void execute( MavenSession session, List mojoExecutions, P } - public static MojoDescriptor createMojoDescriptor( String mojoDescription ) + public static MojoDescriptor createMojoDescriptor( Plugin plugin ) { final PluginDescriptor descriptor = new PluginDescriptor(); - descriptor.setArtifactId( mojoDescription ); + descriptor.setGroupId( plugin.getGroupId() ); + descriptor.setArtifactId( plugin.getArtifactId() ); + descriptor.setPlugin( plugin ); + descriptor.setVersion( plugin.getVersion() ); final MojoDescriptor mojoDescriptor = new MojoDescriptor(); - mojoDescriptor.setDescription( mojoDescription ); mojoDescriptor.setPluginDescriptor( descriptor ); return mojoDescriptor; }