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 afe66a7f4b..8d2060acdc 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 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 void testPropertyInPluginManagementGroupId() throws Exception { 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 void testBuildFromModelSourceResolvesBasedir() throws Exception { } 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 0000000000..15453dea07 --- /dev/null +++ b/maven-core/src/test/projects/project-builder/MNG-7648/pom.xml @@ -0,0 +1,48 @@ + + 4.0.0 + + + org.apache.maven.its + parent + 0.1 + + + location-tracking + jar + + + + remote-repo + file://${basedir}/../../src/test/remote-repo + + + + + + + org.apache.maven.its + bom + 0.1 + pom + import + + + + + + + org.apache.maven.its + a + + + + + + + + maven-clean-plugin + + + + + 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 0000000000..65973c895d --- /dev/null +++ b/maven-core/src/test/remote-repo/org/apache/maven/its/bom/0.1/bom-0.1.pom @@ -0,0 +1,21 @@ + + + 4.0.0 + + org.apache.maven.its + bom + 0.1 + pom + + Maven Integration Test :: Dummy BOM + + + + + org.apache.maven.its + a + 0.1 + + + + 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 0000000000..073330928a --- /dev/null +++ b/maven-core/src/test/remote-repo/org/apache/maven/its/bom/maven-metadata.xml @@ -0,0 +1,11 @@ + + + org.apache.maven.its + bom + 0.1 + + + 0.1 + + + 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 0000000000..8b149f2d73 --- /dev/null +++ b/maven-core/src/test/remote-repo/org/apache/maven/its/parent/0.1/parent-0.1.pom @@ -0,0 +1,22 @@ + + + 4.0.0 + + org.apache.maven.its + parent + 0.1 + pom + + Maven Integration Test :: Dummy Parent + + + + + + maven-clean-plugin + 0.1 + + + + + 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 0000000000..3a76b19e67 --- /dev/null +++ b/maven-core/src/test/remote-repo/org/apache/maven/its/parent/maven-metadata.xml @@ -0,0 +1,11 @@ + + + org.apache.maven.its + parent + 0.1 + + + 0.1 + + + 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 e667fe6409..05688fa8e2 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 DefaultModelBuildingRequest(ModelBuildingRequest request) { setValidationLevel(request.getValidationLevel()); setProcessPlugins(request.isProcessPlugins()); setTwoPhaseBuilding(request.isTwoPhaseBuilding()); + setLocationTracking(request.isLocationTracking()); setProfiles(request.getProfiles()); setActiveProfileIds(request.getActiveProfileIds()); setInactiveProfileIds(request.getInactiveProfileIds());