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 2023/02/17 21:36:56 UTC

[maven] branch maven-3.8.x updated: [MNG-7648] Fix locationTracking in DefaultModelBuildingRequest copy constructor (#940)

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

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


The following commit(s) were added to refs/heads/maven-3.8.x by this push:
     new 91d8c6594 [MNG-7648] Fix locationTracking in DefaultModelBuildingRequest copy constructor (#940)
91d8c6594 is described below

commit 91d8c6594e881151d2feabf8c3d4119d9aa05497
Author: Pavel Horal <pa...@orchitech.cz>
AuthorDate: Thu Dec 29 14:02:33 2022 +0100

    [MNG-7648] Fix locationTracking in DefaultModelBuildingRequest copy constructor (#940)
    
    - Fix locationTracking in DefaultModelBuildingRequest copy constructor
    - Add location tracking unit test
---
 .../apache/maven/project/ProjectBuilderTest.java   | 38 ++++++++++++++++-
 .../test/projects/project-builder/MNG-7648/pom.xml | 48 ++++++++++++++++++++++
 .../org/apache/maven/its/bom/0.1/bom-0.1.pom       | 21 ++++++++++
 .../org/apache/maven/its/bom/maven-metadata.xml    | 11 +++++
 .../org/apache/maven/its/parent/0.1/parent-0.1.pom | 22 ++++++++++
 .../org/apache/maven/its/parent/maven-metadata.xml | 11 +++++
 .../building/DefaultModelBuildingRequest.java      |  1 +
 7 files changed, 151 insertions(+), 1 deletion(-)

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 aae5f24ba..99e408ffe 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
@@ -37,6 +37,8 @@ import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.maven.AbstractCoreMavenComponentTestCase;
 import org.apache.maven.artifact.InvalidArtifactRTException;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.building.FileModelSource;
 import org.apache.maven.model.building.ModelBuildingRequest;
@@ -353,8 +355,42 @@ public class ProjectBuilderTest
         MavenSession session = createMavenSession( pom );
         MavenProject project = session.getCurrentProject();
 
-        for (Plugin buildPlugin : project.getBuildPlugins()) {
+        for ( Plugin buildPlugin : project.getBuildPlugins() )
+        {
             assertNotNull( "Missing version for build plugin " + buildPlugin.getKey(), buildPlugin.getVersion() );
         }
     }
+
+    public void testLocationTrackingResolution()
+            throws Exception
+    {
+        File pom = getProject( "MNG-7648" );
+
+        MavenSession session = createMavenSession( pom );
+        MavenProject project = session.getCurrentProject();
+
+        InputLocation dependencyLocation = null;
+        for ( Dependency dependency : project.getDependencies() )
+        {
+            if ( dependency.getManagementKey().equals( "org.apache.maven.its:a:jar" ) )
+            {
+                dependencyLocation = dependency.getLocation( "version" );
+            }
+        }
+        assertNotNull( "missing dependency", dependencyLocation );
+        assertEquals(
+                "org.apache.maven.its:bom:0.1", dependencyLocation.getSource().getModelId() );
+
+        InputLocation pluginLocation = null;
+        for ( Plugin plugin : project.getBuildPlugins() )
+        {
+            if ( plugin.getKey().equals( "org.apache.maven.plugins:maven-clean-plugin" ) )
+            {
+                pluginLocation = plugin.getLocation( "version" );
+            }
+        }
+        assertNotNull( "missing build plugin", pluginLocation );
+        assertEquals(
+                "org.apache.maven.its:parent:0.1", pluginLocation.getSource().getModelId() );
+    }
 }
diff --git a/maven-core/src/test/projects/project-builder/MNG-7648/pom.xml b/maven-core/src/test/projects/project-builder/MNG-7648/pom.xml
new file mode 100644
index 000000000..15453dea0
--- /dev/null
+++ b/maven-core/src/test/projects/project-builder/MNG-7648/pom.xml
@@ -0,0 +1,48 @@
+<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.apache.maven.its</groupId>
+        <artifactId>parent</artifactId>
+        <version>0.1</version>
+    </parent>
+
+    <artifactId>location-tracking</artifactId>
+    <packaging>jar</packaging>
+
+    <repositories>
+        <repository>
+            <id>remote-repo</id>
+            <url>file://${basedir}/../../src/test/remote-repo</url>
+        </repository>
+    </repositories>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.maven.its</groupId>
+                <artifactId>bom</artifactId>
+                <version>0.1</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.maven.its</groupId>
+            <artifactId>a</artifactId>
+            <!-- version from BOM -->
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-clean-plugin</artifactId>
+                <!-- version from parent -->
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/maven-core/src/test/remote-repo/org/apache/maven/its/bom/0.1/bom-0.1.pom b/maven-core/src/test/remote-repo/org/apache/maven/its/bom/0.1/bom-0.1.pom
new file mode 100644
index 000000000..65973c895
--- /dev/null
+++ b/maven-core/src/test/remote-repo/org/apache/maven/its/bom/0.1/bom-0.1.pom
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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.apache.maven.its</groupId>
+    <artifactId>bom</artifactId>
+    <version>0.1</version>
+    <packaging>pom</packaging>
+
+    <name>Maven Integration Test :: Dummy BOM</name>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.maven.its</groupId>
+                <artifactId>a</artifactId>
+                <version>0.1</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+</project>
diff --git a/maven-core/src/test/remote-repo/org/apache/maven/its/bom/maven-metadata.xml b/maven-core/src/test/remote-repo/org/apache/maven/its/bom/maven-metadata.xml
new file mode 100644
index 000000000..073330928
--- /dev/null
+++ b/maven-core/src/test/remote-repo/org/apache/maven/its/bom/maven-metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>org.apache.maven.its</groupId>
+  <artifactId>bom</artifactId>
+  <version>0.1</version>
+  <versioning>
+    <versions>
+      <version>0.1</version>
+    </versions>
+  </versioning>
+</metadata>
diff --git a/maven-core/src/test/remote-repo/org/apache/maven/its/parent/0.1/parent-0.1.pom b/maven-core/src/test/remote-repo/org/apache/maven/its/parent/0.1/parent-0.1.pom
new file mode 100644
index 000000000..8b149f2d7
--- /dev/null
+++ b/maven-core/src/test/remote-repo/org/apache/maven/its/parent/0.1/parent-0.1.pom
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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.apache.maven.its</groupId>
+    <artifactId>parent</artifactId>
+    <version>0.1</version>
+    <packaging>pom</packaging>
+
+    <name>Maven Integration Test :: Dummy Parent</name>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <artifactId>maven-clean-plugin</artifactId>
+                    <version>0.1</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+</project>
diff --git a/maven-core/src/test/remote-repo/org/apache/maven/its/parent/maven-metadata.xml b/maven-core/src/test/remote-repo/org/apache/maven/its/parent/maven-metadata.xml
new file mode 100644
index 000000000..3a76b19e6
--- /dev/null
+++ b/maven-core/src/test/remote-repo/org/apache/maven/its/parent/maven-metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>org.apache.maven.its</groupId>
+  <artifactId>parent</artifactId>
+  <version>0.1</version>
+  <versioning>
+    <versions>
+      <version>0.1</version>
+    </versions>
+  </versioning>
+</metadata>
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
index 84a68f74c..14cea3533 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
@@ -92,6 +92,7 @@ public class DefaultModelBuildingRequest
         setValidationLevel( request.getValidationLevel() );
         setProcessPlugins( request.isProcessPlugins() );
         setTwoPhaseBuilding( request.isTwoPhaseBuilding() );
+        setLocationTracking( request.isLocationTracking() );
         setProfiles( request.getProfiles() );
         setActiveProfileIds( request.getActiveProfileIds() );
         setInactiveProfileIds( request.getInactiveProfileIds() );