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).