You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2021/03/13 16:34:29 UTC

[maven] branch master updated: Revert "[MNG-7046] Revert MNG-5639 and make repo config static only"

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

michaelo 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 a5c68f7  Revert "[MNG-7046] Revert MNG-5639 and make repo config static only"
a5c68f7 is described below

commit a5c68f7a4afd9c58e727f09dc119b1160decd854
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Mon Mar 1 23:33:14 2021 +0100

    Revert "[MNG-7046] Revert MNG-5639 and make repo config static only"
    
    This reverts commit 8c9c303f9c20396b2d2810a872b16245f9eabfcb.
---
 .../apache/maven/project/ProjectModelResolver.java |  5 ++--
 .../project/DefaultMavenProjectBuilderTest.java    | 10 +++++++
 ...pom-resolves-from-property-based-repository.xml | 31 ++++++++++++++++++++++
 .../maven/model/building/DefaultModelBuilder.java  | 11 +++++++-
 .../repository/internal/DefaultModelResolver.java  |  4 +++
 5 files changed, 58 insertions(+), 3 deletions(-)

diff --git a/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java b/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
index ae44924..b1b28ef 100644
--- a/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
@@ -93,8 +93,9 @@ public class ProjectModelResolver
         this.resolver = resolver;
         this.remoteRepositoryManager = remoteRepositoryManager;
         this.pomRepositories = new ArrayList<>();
-        this.externalRepositories = repositories;
-        this.repositories = repositories;
+        this.externalRepositories = Collections.unmodifiableList( new ArrayList<>( repositories ) );
+        this.repositories = new ArrayList<>();
+        this.repositories.addAll( externalRepositories );
         this.repositoryMerging = repositoryMerging;
         this.repositoryIds = new HashSet<>();
         this.modelPool = modelPool;
diff --git a/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java b/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
index 9338cd2..2bff5d0 100644
--- a/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
@@ -192,6 +192,16 @@ public class DefaultMavenProjectBuilderTest
         assertNotNull( result.getDependencyResolutionResult() );
     }
 
+    public void testImportScopePomResolvesFromPropertyBasedRepository()
+            throws Exception
+    {
+        File pomFile = getTestFile( "src/test/resources/projects/import-scope-pom-resolves-from-property-based-repository.xml" );
+        ProjectBuildingRequest request = newBuildingRequest();
+        request.setProcessPlugins( false );
+        request.setResolveDependencies( true );
+        projectBuilder.build( pomFile, request );
+    }
+
     /**
      * Tests whether local version range parent references are build correctly.
      *
diff --git a/maven-core/src/test/resources/projects/import-scope-pom-resolves-from-property-based-repository.xml b/maven-core/src/test/resources/projects/import-scope-pom-resolves-from-property-based-repository.xml
new file mode 100644
index 0000000..4c29a3b
--- /dev/null
+++ b/maven-core/src/test/resources/projects/import-scope-pom-resolves-from-property-based-repository.xml
@@ -0,0 +1,31 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>test</groupId>
+  <artifactId>imported-pom-found</artifactId>
+  <version>0.0.1-SNAPSHOT</version>
+
+  <properties>
+      <repo.url>file:src/test/remote-repo</repo.url>
+  </properties>
+
+  <repositories>
+    <repository>
+      <id>central</id>
+      <url>${repo.url}</url>
+    </repository>
+  </repositories>
+
+  <dependencyManagement>
+      <dependencies>
+          <dependency>
+              <groupId>org.apache.maven.its</groupId>
+              <artifactId>a</artifactId>
+              <version>0.1</version>
+              <type>pom</type>
+              <scope>import</scope>
+          </dependency>
+      </dependencies>
+  </dependencyManagement>
+
+</project>
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index 51d2b06..62afcd1 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -476,6 +476,9 @@ public class DefaultModelBuilder
 
         result.setEffectiveModel( resultModel );
 
+        // Now the fully interpolated model is available: reconfigure the resolver
+        configureResolver( request.getModelResolver(), resultModel, problems, true );
+
         return resultModel;
     }
 
@@ -807,6 +810,12 @@ public class DefaultModelBuilder
 
     private void configureResolver( ModelResolver modelResolver, Model model, DefaultModelProblemCollector problems )
     {
+        configureResolver( modelResolver, model, problems, false );
+    }
+
+    private void configureResolver( ModelResolver modelResolver, Model model, DefaultModelProblemCollector problems,
+                                    boolean replaceRepositories )
+    {
         if ( modelResolver == null )
         {
             return;
@@ -820,7 +829,7 @@ public class DefaultModelBuilder
         {
             try
             {
-                modelResolver.addRepository( repository, false );
+                modelResolver.addRepository( repository, replaceRepositories );
             }
             catch ( InvalidRepositoryException e )
             {
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
index 0819477..993d38e 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
@@ -67,6 +67,8 @@ class DefaultModelResolver
 
     private List<RemoteRepository> repositories;
 
+    private final List<RemoteRepository> externalRepositories;
+
     private final ArtifactResolver resolver;
 
     private final VersionRangeResolver versionRangeResolver;
@@ -86,6 +88,7 @@ class DefaultModelResolver
         this.versionRangeResolver = versionRangeResolver;
         this.remoteRepositoryManager = remoteRepositoryManager;
         this.repositories = repositories;
+        this.externalRepositories = Collections.unmodifiableList( new ArrayList<>( repositories ) );
 
         this.repositoryIds = new HashSet<>();
     }
@@ -99,6 +102,7 @@ class DefaultModelResolver
         this.versionRangeResolver = original.versionRangeResolver;
         this.remoteRepositoryManager = original.remoteRepositoryManager;
         this.repositories = new ArrayList<>( original.repositories );
+        this.externalRepositories = original.externalRepositories;
         this.repositoryIds = new HashSet<>();
     }