You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2025/08/12 09:43:16 UTC

(maven) branch master updated: Uninterpolated repositories from parent POMs during model building (#11037)

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

cstamas 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 1b942bd88a Uninterpolated repositories from parent POMs during model building (#11037)
1b942bd88a is described below

commit 1b942bd88aebe5671e7a1428031ec75162bc64c8
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Tue Aug 12 11:43:11 2025 +0200

    Uninterpolated repositories from parent POMs during model building (#11037)
    
    On parent loading, the repositories were interpolated okay, but there was a problem that parent own properties were not considered in interpolation (of own repositories).
    
    Fixes #11021
---
 .../org/apache/maven/impl/model/DefaultModelBuilder.java   |  1 +
 .../apache/maven/impl/model/DefaultModelBuilderTest.java   | 14 +++++++++++---
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java
index c55c1ccadf..95b7fd842a 100644
--- a/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java
+++ b/impl/maven-impl/src/main/java/org/apache/maven/impl/model/DefaultModelBuilder.java
@@ -511,6 +511,7 @@ public void mergeRepositories(Model model, boolean replace) {
             Model interpolatedModel = interpolateModel(
                     Model.newBuilder()
                             .pomFile(model.getPomFile())
+                            .properties(model.getProperties())
                             .repositories(model.getRepositories())
                             .build(),
                     request,
diff --git a/impl/maven-impl/src/test/java/org/apache/maven/impl/model/DefaultModelBuilderTest.java b/impl/maven-impl/src/test/java/org/apache/maven/impl/model/DefaultModelBuilderTest.java
index 2b012185c4..a35835d128 100644
--- a/impl/maven-impl/src/test/java/org/apache/maven/impl/model/DefaultModelBuilderTest.java
+++ b/impl/maven-impl/src/test/java/org/apache/maven/impl/model/DefaultModelBuilderTest.java
@@ -92,6 +92,7 @@ public void testMergeRepositories() throws Exception {
         assertEquals(1, repositories.size()); // central
 
         Model model = Model.newBuilder()
+                .properties(Map.of("thirdParentRepo", "https://third.repo"))
                 .repositories(Arrays.asList(
                         Repository.newBuilder()
                                 .id("first")
@@ -100,18 +101,25 @@ public void testMergeRepositories() throws Exception {
                         Repository.newBuilder()
                                 .id("second")
                                 .url("${secondParentRepo}")
+                                .build(),
+                        Repository.newBuilder()
+                                .id("third")
+                                .url("${thirdParentRepo}")
                                 .build()))
                 .build();
+
         state.mergeRepositories(model, false);
 
         // after merge
         repositories = (List<RemoteRepository>) repositoriesField.get(state);
-        assertEquals(3, repositories.size());
+        assertEquals(4, repositories.size());
         assertEquals("first", repositories.get(0).getId());
-        assertEquals("https://some.repo", repositories.get(0).getUrl()); // interpolated
+        assertEquals("https://some.repo", repositories.get(0).getUrl()); // interpolated (user properties)
         assertEquals("second", repositories.get(1).getId());
         assertEquals("${secondParentRepo}", repositories.get(1).getUrl()); // un-interpolated (no source)
-        assertEquals("central", repositories.get(2).getId()); // default
+        assertEquals("third", repositories.get(2).getId());
+        assertEquals("https://third.repo", repositories.get(2).getUrl()); // interpolated (own model properties)
+        assertEquals("central", repositories.get(3).getId()); // default
     }
 
     private Path getPom(String name) {