You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/10/23 13:43:39 UTC
svn commit: r829009 - in /maven/maven-3/trunk:
maven-core/src/main/java/org/apache/maven/project/
maven-model-builder/src/main/java/org/apache/maven/model/building/
maven-model-builder/src/main/java/org/apache/maven/model/resolution/
Author: bentmann
Date: Fri Oct 23 11:43:38 2009
New Revision: 829009
URL: http://svn.apache.org/viewvc?rev=829009&view=rev
Log:
[MNG-4400] [regression] Repository order from settings.xml is not respected during artifact resolution
Modified:
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java?rev=829009&r1=829008&r2=829009&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java Fri Oct 23 11:43:38 2009
@@ -22,7 +22,9 @@
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 @@
private ReactorModelPool reactorModelPool;
+ private Set<String> repositoryIds;
+
public RepositoryModelResolver( RepositorySystem repositorySystem, ResolutionErrorHandler resolutionErrorHandler,
ProjectBuildingRequest projectBuildingRequest, ReactorModelPool reactorModelPool )
{
@@ -78,24 +82,40 @@
}
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 @@
repositorySystem.injectAuthentication( Arrays.asList( repo ), projectBuildingRequest.getServers() );
- remoteRepositories.add( 0, repo );
+ remoteRepositories.add( repo );
remoteRepositories = repositorySystem.getEffectiveRepositories( remoteRepositories );
}
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java?rev=829009&r1=829008&r2=829009&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java Fri Oct 23 11:43:38 2009
@@ -23,7 +23,6 @@
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 @@
problems.setSource( model );
List<Repository> repositories = model.getRepositories();
- Collections.reverse( repositories );
for ( Repository repository : repositories )
{
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java?rev=829009&r1=829008&r2=829009&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/resolution/ModelResolver.java Fri Oct 23 11:43:38 2009
@@ -46,8 +46,9 @@
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).