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());