mirror of https://github.com/apache/maven.git
[MNG-4400] [regression] Repository order from settings.xml is not respected during artifact resolution
git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@829009 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
5160b63bc0
commit
fce4db9c9c
|
@ -22,7 +22,9 @@ package org.apache.maven.project;
|
|||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.maven.artifact.Artifact;
|
||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||
|
@ -57,6 +59,8 @@ class RepositoryModelResolver
|
|||
|
||||
private ReactorModelPool reactorModelPool;
|
||||
|
||||
private Set<String> repositoryIds;
|
||||
|
||||
public RepositoryModelResolver( RepositorySystem repositorySystem, ResolutionErrorHandler resolutionErrorHandler,
|
||||
ProjectBuildingRequest projectBuildingRequest, ReactorModelPool reactorModelPool )
|
||||
{
|
||||
|
@ -78,24 +82,40 @@ class RepositoryModelResolver
|
|||
}
|
||||
this.projectBuildingRequest = projectBuildingRequest;
|
||||
|
||||
if ( projectBuildingRequest.getRemoteRepositories() == null )
|
||||
this.remoteRepositories = new ArrayList<ArtifactRepository>();
|
||||
if ( projectBuildingRequest.getRemoteRepositories() != null )
|
||||
{
|
||||
throw new IllegalArgumentException( "no remote repositories specified" );
|
||||
this.remoteRepositories.addAll( projectBuildingRequest.getRemoteRepositories() );
|
||||
}
|
||||
this.remoteRepositories = new ArrayList<ArtifactRepository>( projectBuildingRequest.getRemoteRepositories() );
|
||||
|
||||
this.repositoryIds = new HashSet<String>();
|
||||
|
||||
this.reactorModelPool = reactorModelPool;
|
||||
}
|
||||
|
||||
private RepositoryModelResolver( RepositoryModelResolver original )
|
||||
{
|
||||
this.repositorySystem = original.repositorySystem;
|
||||
this.resolutionErrorHandler = original.resolutionErrorHandler;
|
||||
this.projectBuildingRequest = original.projectBuildingRequest;
|
||||
this.reactorModelPool = original.reactorModelPool;
|
||||
this.remoteRepositories = new ArrayList<ArtifactRepository>( original.remoteRepositories );
|
||||
this.repositoryIds = new HashSet<String>( original.repositoryIds );
|
||||
}
|
||||
|
||||
public ModelResolver newCopy()
|
||||
{
|
||||
return new RepositoryModelResolver( repositorySystem, resolutionErrorHandler, projectBuildingRequest,
|
||||
reactorModelPool );
|
||||
return new RepositoryModelResolver( this );
|
||||
}
|
||||
|
||||
public void addRepository( Repository repository )
|
||||
throws InvalidRepositoryException
|
||||
{
|
||||
if ( !repositoryIds.add( repository.getId() ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
ArtifactRepository repo = repositorySystem.buildArtifactRepository( repository );
|
||||
|
@ -106,7 +126,7 @@ class RepositoryModelResolver
|
|||
|
||||
repositorySystem.injectAuthentication( Arrays.asList( repo ), projectBuildingRequest.getServers() );
|
||||
|
||||
remoteRepositories.add( 0, repo );
|
||||
remoteRepositories.add( repo );
|
||||
|
||||
remoteRepositories = repositorySystem.getEffectiveRepositories( remoteRepositories );
|
||||
}
|
||||
|
|
|
@ -23,7 +23,6 @@ import java.io.File;
|
|||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
|
@ -387,7 +386,6 @@ public class DefaultModelBuilder
|
|||
problems.setSource( model );
|
||||
|
||||
List<Repository> repositories = model.getRepositories();
|
||||
Collections.reverse( repositories );
|
||||
|
||||
for ( Repository repository : repositories )
|
||||
{
|
||||
|
|
|
@ -46,8 +46,9 @@ public interface ModelResolver
|
|||
throws UnresolvableModelException;
|
||||
|
||||
/**
|
||||
* Adds a repository to use for subsequent resolution requests. The order in which repositories are added matters.
|
||||
* When multiple repositories with the same identifier are added, only the last repository being added will be used.
|
||||
* Adds a repository to use for subsequent resolution requests. The order in which repositories are added matters,
|
||||
* repositories that were added first should also be searched first. When multiple repositories with the same
|
||||
* identifier are added, only the first repository being added will be used.
|
||||
*
|
||||
* @param repository The repository to add to the internal search chain, must not be {@code null}.
|
||||
* @throws InvalidRepositoryException If the repository could not be added (e.g. due to invalid URL or layout).
|
||||
|
|
Loading…
Reference in New Issue