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/09/11 14:31:02 UTC

svn commit: r813805 - in /maven/maven-3/trunk: maven-compat/src/main/java/org/apache/maven/artifact/resolver/ maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/ maven-core/src/main/java/org/apache/maven/project/artifact/

Author: bentmann
Date: Fri Sep 11 12:31:00 2009
New Revision: 813805

URL: http://svn.apache.org/viewvc?rev=813805&view=rev
Log:
o Fixed resolution of transitive dependencies

Modified:
    maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionResult.java
    maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
    maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionResult.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionResult.java?rev=813805&r1=813804&r2=813805&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionResult.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionResult.java Fri Sep 11 12:31:00 2009
@@ -59,10 +59,10 @@
 
     private List<ArtifactRepository> repositories;
 
-    private Set<Artifact> requestedArtifacts;
-
     private Set<Artifact> artifacts;
 
+    private Set<ResolutionNode> resolutionNodes;
+
     public Artifact getOriginatingArtifact()
     {
         return originatingArtifact;
@@ -100,19 +100,19 @@
         this.artifacts = artifacts;
     }
 
-    public void addRequestedArtifact( Artifact artifact )
+    public Set<ResolutionNode> getResolutionNodes()
     {
-        if ( requestedArtifacts == null )
+        if ( resolutionNodes == null )
         {
-            requestedArtifacts = new LinkedHashSet<Artifact>();
+            resolutionNodes = new LinkedHashSet<ResolutionNode>();
         }
 
-        requestedArtifacts.add( artifact );
+        return resolutionNodes;
     }
 
-    public Set<Artifact> getRequestedArtifacts()
+    public void setResolutionNodes( Set<ResolutionNode> resolutionNodes )
     {
-        return requestedArtifacts;
+        this.resolutionNodes = resolutionNodes;
     }
 
     public boolean hasMissingArtifacts()

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=813805&r1=813804&r2=813805&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Fri Sep 11 12:31:00 2009
@@ -493,15 +493,21 @@
             return result;
         }
                 
-        if ( result.getArtifacts() != null )
+        if ( result.getResolutionNodes() != null )
         {
-            for ( Artifact artifact : result.getArtifacts() )
+            ArtifactResolutionRequest childRequest = new ArtifactResolutionRequest( request );
+
+            for ( ResolutionNode node : result.getResolutionNodes() )
             {
+                Artifact artifact = node.getArtifact();
+
                 try
                 {
                     if ( resolutionFilter == null || resolutionFilter.include( artifact ) )
                     {
-                        resolve( artifact, request, request.getTransferListener(), false );
+                        childRequest.setRemoteRepositories( node.getRemoteRepositories() );
+
+                        resolve( artifact, childRequest, request.getTransferListener(), false );
                     }
                 }
                 catch ( ArtifactNotFoundException anfe )

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java?rev=813805&r1=813804&r2=813805&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java Fri Sep 11 12:31:00 2009
@@ -170,7 +170,6 @@
                                 
                                 // This is required right now.
                                 result.addArtifact( artifact );
-                                result.addRequestedArtifact( artifact );
                             }
                         }
                     }
@@ -182,6 +181,8 @@
             }
         }
 
+        result.setResolutionNodes( set );
+
         return result;
     }
 

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=813805&r1=813804&r2=813805&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Fri Sep 11 12:31:00 2009
@@ -20,6 +20,7 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -137,6 +138,8 @@
 
         List<Dependency> managedDependencies = null;
 
+        List<ArtifactRepository> pomRepositories = null;
+
         Artifact pomArtifact;
 
         Artifact relocatedArtifact = null;
@@ -177,6 +180,8 @@
 
                 DependencyManagement depMngt = rel.project.getDependencyManagement();
                 managedDependencies = ( depMngt != null ) ? depMngt.getDependencies() : null;
+
+                pomRepositories = rel.project.getRemoteArtifactRepositories();
             }
         }
 
@@ -211,8 +216,11 @@
             }
         }
 
+        List<ArtifactRepository> aggregatedRepositories =
+            aggregateRepositories( request.getRemoteRepositories(), pomRepositories );
+
         ResolutionGroup result =
-            new ResolutionGroup( pomArtifact, relocatedArtifact, artifacts, managedVersions, request.getRemoteRepositories() );
+            new ResolutionGroup( pomArtifact, relocatedArtifact, artifacts, managedVersions, aggregatedRepositories );
 
         cache.put( artifact, request.isResolveManagedVersions(), request.getLocalRepository(),
                    request.getRemoteRepositories(), result );
@@ -220,6 +228,37 @@
         return result;
     }
 
+    private List<ArtifactRepository> aggregateRepositories( List<ArtifactRepository> requestRepositories,
+                                                            List<ArtifactRepository> pomRepositories )
+    {
+        List<ArtifactRepository> repositories = requestRepositories;
+
+        if ( pomRepositories != null && !pomRepositories.isEmpty() )
+        {
+            Map<String, ArtifactRepository> repos = new LinkedHashMap<String, ArtifactRepository>();
+
+            for ( ArtifactRepository repo : requestRepositories )
+            {
+                if ( !repos.containsKey( repo.getId() ) )
+                {
+                    repos.put( repo.getId(), repo );
+                }
+            }
+
+            for ( ArtifactRepository repo : pomRepositories )
+            {
+                if ( !repos.containsKey( repo.getId() ) )
+                {
+                    repos.put( repo.getId(), repo );
+                }
+            }
+
+            repositories = new ArrayList<ArtifactRepository>( repos.values() );
+        }
+
+        return repositories;
+    }
+
     private Artifact createDependencyArtifact( Dependency dependency, Artifact owner, Artifact pom )
         throws ArtifactMetadataRetrievalException
     {