You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2022/12/29 13:02:43 UTC

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

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

sjaranowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/master by this push:
     new 6178f6ed8 [MNG-7648] Fix locationTracking in DefaultModelBuildingRequest copy constructor (#940)
6178f6ed8 is described below

commit 6178f6ed8637bfa2b7765e0f74eb51c4fa1224d9
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   | 32 ++++++++++++++-
 .../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, 145 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 afe66a7f4..8d2060acd 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
@@ -29,6 +29,8 @@ import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.commons.io.FileUtils;
 import org.apache.maven.AbstractCoreMavenComponentTestCase;
 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;
@@ -321,7 +323,7 @@ public class ProjectBuilderTest extends AbstractCoreMavenComponentTestCase {
         MavenProject project = session.getCurrentProject();
 
         for (Plugin buildPlugin : project.getBuildPlugins()) {
-            assertNotNull("Missing version for build plugin " + buildPlugin.getKey(), buildPlugin.getVersion());
+            assertNotNull(buildPlugin.getVersion(), "Missing version for build plugin " + buildPlugin.getKey());
         }
     }
 
@@ -347,4 +349,32 @@ public class ProjectBuilderTest extends AbstractCoreMavenComponentTestCase {
         }
         assertEquals(0, errors);
     }
+
+    @Test
+    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(dependencyLocation, "missing dependency");
+        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(pluginLocation, "missing build plugin");
+        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 e667fe640..05688fa8e 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
@@ -87,6 +87,7 @@ public class DefaultModelBuildingRequest implements ModelBuildingRequest {
         setValidationLevel(request.getValidationLevel());
         setProcessPlugins(request.isProcessPlugins());
         setTwoPhaseBuilding(request.isTwoPhaseBuilding());
+        setLocationTracking(request.isLocationTracking());
         setProfiles(request.getProfiles());
         setActiveProfileIds(request.getActiveProfileIds());
         setInactiveProfileIds(request.getInactiveProfileIds());