You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2015/05/07 20:57:50 UTC

svn commit: r1678256 - in /maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal: Maven30ArtifactResolver.java Maven31ArtifactResolver.java

Author: rfscholte
Date: Thu May  7 18:57:49 2015
New Revision: 1678256

URL: http://svn.apache.org/r1678256
Log:
Ensure that relocation is respected

Modified:
    maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResolver.java
    maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResolver.java

Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResolver.java?rev=1678256&r1=1678255&r2=1678256&view=diff
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResolver.java (original)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResolver.java Thu May  7 18:57:49 2015
@@ -32,6 +32,9 @@ import org.sonatype.aether.RepositorySys
 import org.sonatype.aether.RepositorySystemSession;
 import org.sonatype.aether.artifact.Artifact;
 import org.sonatype.aether.repository.RemoteRepository;
+import org.sonatype.aether.resolution.ArtifactDescriptorException;
+import org.sonatype.aether.resolution.ArtifactDescriptorRequest;
+import org.sonatype.aether.resolution.ArtifactDescriptorResult;
 import org.sonatype.aether.resolution.ArtifactRequest;
 import org.sonatype.aether.resolution.ArtifactResolutionException;
 
@@ -47,33 +50,40 @@ public class Maven30ArtifactResolver
                                  List<ArtifactRepository> remoteRepositories )
         throws ArtifactResolverException
     {
-        ArtifactRequest request = new ArtifactRequest();
-
         Artifact aetherArtifact =
             (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", org.apache.maven.artifact.Artifact.class,
                                        mavenArtifact );
-        request.setArtifact( aetherArtifact );
 
+        @SuppressWarnings( "unchecked" )
         List<RemoteRepository> aetherRepositories =
                         (List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos",
                                                                  List.class, remoteRepositories );
-        request.setRepositories( aetherRepositories );
         
         RepositorySystemSession session =
             (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
 
         try
         {
+            // use descriptor to respect relocation
+            ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest( aetherArtifact, aetherRepositories, null );
+            
+            ArtifactDescriptorResult descriptorResult = repositorySystem.readArtifactDescriptor( session, descriptorRequest );
+            
+            ArtifactRequest request = new ArtifactRequest( descriptorResult.getArtifact(), aetherRepositories, null );
+            
             Artifact resolvedArtifact = repositorySystem.resolveArtifact( session, request ).getArtifact();
             
             return (org.apache.maven.artifact.Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
                                                                         Artifact.class, resolvedArtifact );
         }
+        catch ( ArtifactDescriptorException e )
+        {
+            throw new ArtifactResolverException( e.getMessage(), e );
+        }
         catch ( ArtifactResolutionException e )
         {
             throw new ArtifactResolverException( e.getMessage(), e );
         }
-
     }
 
 }

Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResolver.java?rev=1678256&r1=1678255&r2=1678256&view=diff
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResolver.java (original)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResolver.java Thu May  7 18:57:49 2015
@@ -31,9 +31,12 @@ import org.codehaus.plexus.component.ann
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.resolution.ArtifactDescriptorException;
+import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
+import org.eclipse.aether.resolution.ArtifactDescriptorResult;
 import org.eclipse.aether.resolution.ArtifactRequest;
 import org.eclipse.aether.resolution.ArtifactResolutionException;
-import org.eclipse.aether.repository.RemoteRepository;
 
 @Component( role = ArtifactResolver.class, hint = "maven31" )
 public class Maven31ArtifactResolver
@@ -47,23 +50,27 @@ public class Maven31ArtifactResolver
                                  List<ArtifactRepository> remoteRepositories )
         throws ArtifactResolverException
     {
-        ArtifactRequest request = new ArtifactRequest();
-
         Artifact aetherArtifact =
             (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", org.apache.maven.artifact.Artifact.class,
                                        mavenArtifact );
-        request.setArtifact( aetherArtifact );
 
+        @SuppressWarnings( "unchecked" )
         List<RemoteRepository> aetherRepositories =
             (List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos",
                                                      List.class, remoteRepositories );        
-        request.setRepositories( aetherRepositories );
 
         RepositorySystemSession session =
             (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
 
         try
         {
+            // use descriptor to respect relocation
+            ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest( aetherArtifact, aetherRepositories, null );
+            
+            ArtifactDescriptorResult descriptorResult = repositorySystem.readArtifactDescriptor( session, descriptorRequest );
+
+            ArtifactRequest request = new ArtifactRequest( descriptorResult.getArtifact(), aetherRepositories, null );
+            
             Artifact resolvedArtifact = repositorySystem.resolveArtifact( session, request ).getArtifact();
             
             return (org.apache.maven.artifact.Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
@@ -73,6 +80,10 @@ public class Maven31ArtifactResolver
         {
             throw new ArtifactResolverException( e.getMessage(), e );
         }
+        catch ( ArtifactDescriptorException e )
+        {
+            throw new ArtifactResolverException( e.getMessage(), e );
+        }
     }
 
 }