diff --git a/impl/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java b/impl/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
index 0dee2323a6df..863bfcf898db 100644
--- a/impl/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
+++ b/impl/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
@@ -700,4 +700,43 @@ public void testEmptyModulesElementPreventsDiscovery() throws Exception {
// The modules list should be empty since we explicitly defined an empty element
assertTrue(parent.getModel().getDelegate().getModules().isEmpty());
}
+
+ @Test
+ void testVersionInheritedFromRemoteParent() throws Exception {
+ File f1 = getTestFile("src/test/resources/projects/parent-version-inherited-from-remote/pom.xml");
+ MavenProject project = getProject(f1);
+
+ assertNotNull(project, "project should not be null");
+ assertEquals("1.0", project.getVersion(), "version should be inherited from remote parent");
+ assertNotNull(project.getArtifact(), "project artifact should not be null");
+ assertEquals("1.0", project.getArtifact().getVersion(), "artifact version should match inherited version");
+ assertEquals("org.different.group", project.getGroupId(), "groupId should be from child POM");
+ assertEquals("child-project", project.getArtifactId(), "artifactId should be from child POM");
+ }
+
+ @Test
+ void testVersionInheritedFromRemoteParentMultiModule() throws Exception {
+ File pom = getTestFile("src/test/resources/projects/parent-version-inherited-from-remote-multimodule/pom.xml");
+ ProjectBuildingRequest configuration = newBuildingRequest();
+ InternalSession internalSession = InternalSession.from(configuration.getRepositorySession());
+ InternalMavenSession mavenSession = InternalMavenSession.from(internalSession);
+ mavenSession
+ .getMavenSession()
+ .getRequest()
+ .setRootDirectory(pom.toPath().getParent());
+
+ List results = projectBuilder.build(List.of(pom), true, configuration);
+ assertEquals(2, results.size());
+
+ MavenProject child = results.stream()
+ .map(ProjectBuildingResult::getProject)
+ .filter(p -> "child-project".equals(p.getArtifactId()))
+ .findFirst()
+ .orElse(null);
+ assertNotNull(child, "child project should be found");
+ assertEquals("1.0", child.getVersion(), "version should be inherited from remote parent");
+ assertNotNull(child.getArtifact(), "child project artifact should not be null");
+ assertEquals("1.0", child.getArtifact().getVersion(), "artifact version should match inherited version");
+ assertEquals("org.different.group", child.getGroupId(), "groupId should be from child POM");
+ }
}
diff --git a/impl/maven-core/src/test/remote-repo/org/test/parent-pom/1.0/parent-pom-1.0.pom b/impl/maven-core/src/test/remote-repo/org/test/parent-pom/1.0/parent-pom-1.0.pom
new file mode 100644
index 000000000000..fd93eabf47d5
--- /dev/null
+++ b/impl/maven-core/src/test/remote-repo/org/test/parent-pom/1.0/parent-pom-1.0.pom
@@ -0,0 +1,31 @@
+
+ 4.0.0
+ org.test
+ parent-pom
+ 1.0
+ pom
+
+
+
+ staging
+ https://repository.example.org/staging
+
+
+
+
+
+ nightly
+
+
+ nightly
+
+
+
+
+ ${uninterpolatedRepoId}
+ file://${SNAPSHOTS_PATH}
+
+
+
+
+
diff --git a/impl/maven-core/src/test/resources/projects/parent-version-inherited-from-remote-multimodule/child/pom.xml b/impl/maven-core/src/test/resources/projects/parent-version-inherited-from-remote-multimodule/child/pom.xml
new file mode 100644
index 000000000000..d3c99a4c88dd
--- /dev/null
+++ b/impl/maven-core/src/test/resources/projects/parent-version-inherited-from-remote-multimodule/child/pom.xml
@@ -0,0 +1,12 @@
+
+ 4.0.0
+
+ org.test
+ parent-pom
+ 1.0
+
+
+ org.different.group
+ child-project
+
+
diff --git a/impl/maven-core/src/test/resources/projects/parent-version-inherited-from-remote-multimodule/pom.xml b/impl/maven-core/src/test/resources/projects/parent-version-inherited-from-remote-multimodule/pom.xml
new file mode 100644
index 000000000000..80cfd216d32d
--- /dev/null
+++ b/impl/maven-core/src/test/resources/projects/parent-version-inherited-from-remote-multimodule/pom.xml
@@ -0,0 +1,10 @@
+
+ 4.0.0
+ org.test.aggregator
+ aggregator
+ 1.0
+ pom
+
+ child
+
+
diff --git a/impl/maven-core/src/test/resources/projects/parent-version-inherited-from-remote/pom.xml b/impl/maven-core/src/test/resources/projects/parent-version-inherited-from-remote/pom.xml
new file mode 100644
index 000000000000..96a5d7325fe4
--- /dev/null
+++ b/impl/maven-core/src/test/resources/projects/parent-version-inherited-from-remote/pom.xml
@@ -0,0 +1,12 @@
+
+ 4.0.0
+
+ org.test
+ parent-pom
+ 1.0
+
+
+ org.different.group
+ child-project
+
+