diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/RemoteRepositoryManager.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/RemoteRepositoryManager.java index 94dae527c..9933a78da 100644 --- a/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/RemoteRepositoryManager.java +++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/RemoteRepositoryManager.java @@ -55,6 +55,12 @@ List aggregateRepositories( RepositorySystemSession session, List recessiveRepositories, boolean recessiveIsRaw ); + List aggregateRepositories( RepositorySystemSession session, + List dominantRepositories, + List recessiveRepositories, + boolean recessiveIsRaw, + boolean prepend ); + /** * Gets the effective repository policy for the specified remote repository by merging the applicable * snapshot/release policy of the repository with global settings from the supplied session. diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java index 90b1e3861..7b1ad7ad8 100644 --- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java +++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java @@ -128,6 +128,15 @@ public List aggregateRepositories( RepositorySystemSession ses List dominantRepositories, List recessiveRepositories, boolean recessiveIsRaw ) + { + return aggregateRepositories( session, dominantRepositories, recessiveRepositories, recessiveIsRaw, false ); + } + + public List aggregateRepositories( RepositorySystemSession session, + List dominantRepositories, + List recessiveRepositories, + boolean recessiveIsRaw, + boolean prepend ) { if ( recessiveRepositories.isEmpty() ) { @@ -201,7 +210,14 @@ public List aggregateRepositories( RepositorySystemSession ses } } - result.add( repository ); + if ( prepend ) + { + result.add( 0, repository ); + } + else + { + result.add( repository ); + } } return result; diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollector.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollector.java index 7b152a8ce..355dce810 100644 --- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollector.java +++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollector.java @@ -491,7 +491,7 @@ private void doRecurse( Args args, Results results, List repos args.ignoreRepos ? repositories : remoteRepositoryManager.aggregateRepositories( args.session, repositories, - descriptorResult.getRepositories(), true ); + descriptorResult.getRepositories(), true, true ); Object key = args.pool.toKey( d.getArtifact(), childRepos, childSelector, childManager, childTraverser, childFilter ); diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/StubRemoteRepositoryManager.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/StubRemoteRepositoryManager.java index 547106945..aab1ed228 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/StubRemoteRepositoryManager.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/StubRemoteRepositoryManager.java @@ -43,6 +43,15 @@ public List aggregateRepositories( RepositorySystemSession ses return dominantRepositories; } + public List aggregateRepositories( RepositorySystemSession session, + List dominantRepositories, + List recessiveRepositories, + boolean recessiveIsRaw, + boolean prepend ) + { + return dominantRepositories; + } + public RepositoryPolicy getPolicy( RepositorySystemSession session, RemoteRepository repository, boolean releases, boolean snapshots ) {