[MNG-4347] import-scoped dependencies of direct dependencies are not resolved 
using profile modifications from settings.xml

o Updated the 'DefaultModelResolver' to handle replacing repositories the same 
way the
  'DefaultDependencyCollector' does. When the 'DefaultDependencyCollector' finds
  a repository in a child node with an id matching a repository already in use,
  it will only merge any mirror definitions but never change the repository 
already
  in use. The 'DefaultModelResolver' needs to follow the same logic. What has 
been
  provided must not change for consistency.


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/d567cfe5
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/d567cfe5
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/d567cfe5

Branch: refs/heads/DEPMGMT-INCLUDE
Commit: d567cfe590cadda471d0f635f9ce8f6c78e27760
Parents: f0b7871
Author: Christian Schulte <schu...@apache.org>
Authored: Tue Dec 13 03:30:32 2016 +0100
Committer: Christian Schulte <schu...@apache.org>
Committed: Sun Feb 12 14:51:27 2017 +0100

----------------------------------------------------------------------
 .../maven/repository/internal/DefaultModelResolver.java | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/d567cfe5/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
----------------------------------------------------------------------
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 260a770..0cc5b17 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
@@ -71,6 +71,8 @@ class DefaultModelResolver
 
     private final List<RemoteRepository> externalRepositories;
 
+    private final Set<String> externalRepositoryIds;
+
     private final ArtifactResolver resolver;
 
     private final VersionRangeResolver versionRangeResolver;
@@ -93,8 +95,13 @@ class DefaultModelResolver
         List<RemoteRepository> externalRepositories = new ArrayList<>();
         externalRepositories.addAll( repositories );
         this.externalRepositories = Collections.unmodifiableList( 
externalRepositories );
-
         this.repositoryIds = new HashSet<>();
+        this.externalRepositoryIds = new HashSet<>();
+        for ( final RemoteRepository repository : this.repositories )
+        {
+            this.repositoryIds.add( repository.getId() );
+            this.externalRepositoryIds.add( repository.getId() );
+        }
     }
 
     private DefaultModelResolver( DefaultModelResolver original )
@@ -108,6 +115,7 @@ class DefaultModelResolver
         this.repositories = new ArrayList<>( original.repositories );
         this.externalRepositories = original.externalRepositories;
         this.repositoryIds = new HashSet<>( original.repositoryIds );
+        this.externalRepositoryIds = new HashSet<>( 
original.externalRepositoryIds );
     }
 
     @Override
@@ -128,7 +136,7 @@ class DefaultModelResolver
 
         if ( !repositoryIds.add( repository.getId() ) )
         {
-            if ( !replace )
+            if ( !replace || this.externalRepositoryIds.contains( 
repository.getId() ) )
             {
                 return;
             }

Reply via email to