You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2020/10/03 10:52:58 UTC

[maven] 01/01: [MNG-6983] Plugin key can get out of sync with artifactId and groupId

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

michaelo pushed a commit to branch MNG-6983
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 39641ac803e17360df40288aaeb40ea0c5ccd77d
Author: pazderski <pa...@askvisual.de>
AuthorDate: Tue Aug 25 00:38:08 2020 +0200

    [MNG-6983] Plugin key can get out of sync with artifactId and groupId
    
    The plugin key is build as combination of artifactId and groupId but not
    updated if either of these two ids change.
    This can be a problem if artifactId or groupId is a variable. The calculated
    key will likely contain the unresolved property and is not updated once the
    variable is interpolated.
    
    This closes #372
---
 .../apache/maven/project/ProjectBuilderTest.java   | 14 ++++++++
 .../project-builder/MNG-6983/parent-pom.xml        | 38 ++++++++++++++++++++++
 .../test/projects/project-builder/MNG-6983/pom.xml | 22 +++++++++++++
 maven-model/src/main/mdo/maven.mdo                 |  8 +----
 4 files changed, 75 insertions(+), 7 deletions(-)

diff --git a/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java b/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
index 538f887..7cd3758 100644
--- a/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
@@ -36,6 +36,7 @@ import java.util.Properties;
 import org.apache.maven.AbstractCoreMavenComponentTestCase;
 import org.apache.maven.artifact.InvalidArtifactRTException;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.model.building.FileModelSource;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelSource;
@@ -330,4 +331,17 @@ public class ProjectBuilderTest
         assertEquals( 1, project.getMailingLists().size() );
         assertEquals( 1, project.getResources().size() );
     }
+
+    public void testPropertyInPluginManagementGroupId()
+            throws Exception
+    {
+        File pom = getProject( "MNG-6983" );
+
+        MavenSession session = createMavenSession( pom );
+        MavenProject project = session.getCurrentProject();
+
+        for (Plugin buildPlugin : project.getBuildPlugins()) {
+            assertNotNull( "Missing version for build plugin " + buildPlugin.getKey(), buildPlugin.getVersion() );
+        }
+    }
 }
diff --git a/maven-core/src/test/projects/project-builder/MNG-6983/parent-pom.xml b/maven-core/src/test/projects/project-builder/MNG-6983/parent-pom.xml
new file mode 100644
index 0000000..3aed967
--- /dev/null
+++ b/maven-core/src/test/projects/project-builder/MNG-6983/parent-pom.xml
@@ -0,0 +1,38 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.example</groupId>
+    <artifactId>parent</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <properties>
+        <codehaus.groupId>org.codehaus.mojo</codehaus.groupId>
+    </properties>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>${codehaus.groupId}</groupId>
+                    <artifactId>build-helper-maven-plugin</artifactId>
+                    <version>3.2.0</version>
+                    <executions>
+                        <execution>
+                            <id>add-source-config</id>
+                            <phase>generate-sources</phase>
+                            <goals>
+                                <goal>add-source</goal>
+                            </goals>
+                            <configuration>
+                                <sources>
+                                    <source>.</source>
+                                </sources>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+</project>
diff --git a/maven-core/src/test/projects/project-builder/MNG-6983/pom.xml b/maven-core/src/test/projects/project-builder/MNG-6983/pom.xml
new file mode 100644
index 0000000..648f7fc
--- /dev/null
+++ b/maven-core/src/test/projects/project-builder/MNG-6983/pom.xml
@@ -0,0 +1,22 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.example</groupId>
+        <artifactId>parent</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+        <relativePath>./parent-pom.xml</relativePath>
+    </parent>
+
+    <artifactId>child</artifactId>
+    <packaging>jar</packaging>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>${codehaus.groupId}</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/maven-model/src/main/mdo/maven.mdo b/maven-model/src/main/mdo/maven.mdo
index 6885641..61d9ceb 100644
--- a/maven-model/src/main/mdo/maven.mdo
+++ b/maven-model/src/main/mdo/maven.mdo
@@ -2314,18 +2314,12 @@
         return id.toString();
     }
 
-    //TODO we shall reset key variable when groupId/artifactId change
-    private String key = null;
     /**
      * @return the key of the plugin, ie <code>groupId:artifactId</code>
      */
     public String getKey()
     {
-        if ( key == null )
-        {
-            key = constructKey( groupId, artifactId );
-        }
-        return key;
+        return constructKey( groupId, artifactId );
     }
 
     /**