You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by pg...@apache.org on 2012/10/18 05:20:29 UTC

svn commit: r1399508 - /maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/PurgeLocalRepositoryMojo.java

Author: pgier
Date: Thu Oct 18 03:20:28 2012
New Revision: 1399508

URL: http://svn.apache.org/viewvc?rev=1399508&view=rev
Log:
[MDEP-383] Update for purge-local-repository to work with Maven 3 remote repository resolution

Modified:
    maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/PurgeLocalRepositoryMojo.java

Modified: maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/PurgeLocalRepositoryMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/PurgeLocalRepositoryMojo.java?rev=1399508&r1=1399507&r2=1399508&view=diff
==============================================================================
--- maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/PurgeLocalRepositoryMojo.java (original)
+++ maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/PurgeLocalRepositoryMojo.java Thu Oct 18 03:20:28 2012
@@ -111,6 +111,12 @@ public class PurgeLocalRepositoryMojo
     private ArtifactRepository localRepository;
 
     /**
+     * List of Remote Repositories used by the resolver
+     */
+    @Parameter( defaultValue = "${project.remoteArtifactRepositories}", readonly = true, required = true )
+    protected List<ArtifactRepository> remoteRepos;
+
+    /**
      * The artifact resolver used to re-resolve dependencies, if that option is
      * enabled.
      */
@@ -208,14 +214,17 @@ public class PurgeLocalRepositoryMojo
         return patterns;
     }
 
+    /**
+     * Map the groupId:artifactId to the artifact object
+     * @param project The current Maven project
+     * @return
+     */
     private Map<String, Artifact> createArtifactMap( MavenProject project )
     {
         Map<String, Artifact> artifactMap = Collections.emptyMap();
 
         @SuppressWarnings( "unchecked" ) List<Dependency> dependencies = project.getDependencies();
 
-        List<ArtifactRepository> remoteRepositories = Collections.emptyList();
-
         Set<Artifact> dependencyArtifacts = new HashSet<Artifact>();
 
         for ( Dependency dependency : dependencies )
@@ -233,6 +242,9 @@ public class PurgeLocalRepositoryMojo
             dependencyArtifacts.add( artifact );
         }
 
+        // If the transitive dependencies are included, it's necessary to resolve the
+        // dependencies, even if that means going to the remote repository, to make
+        // sure we get the full tree.
         if ( actTransitively )
         {
             try
@@ -242,7 +254,7 @@ public class PurgeLocalRepositoryMojo
                 if ( snapshotsOnly )
                 {
                     result = resolver.resolveTransitively( dependencyArtifacts, project.getArtifact(), localRepository,
-                                                           remoteRepositories, source, new ArtifactFilter()
+                                                           remoteRepos, source, new ArtifactFilter()
                     {
                         public boolean include( Artifact artifact )
                         {
@@ -253,7 +265,7 @@ public class PurgeLocalRepositoryMojo
                 else
                 {
                     result =
-                        resolver.resolveTransitively( dependencyArtifacts, project.getArtifact(), remoteRepositories,
+                        resolver.resolveTransitively( dependencyArtifacts, project.getArtifact(), remoteRepos,
                                                       localRepository, source );
                 }
 
@@ -268,25 +280,16 @@ public class PurgeLocalRepositoryMojo
                 verbose( "Skipping: " + e.getArtifactId() + ". It cannot be resolved." );
             }
         }
+        // If we don't care about transitive dependencies, there is no need to resolve
+        // from the remote repositories, we can just use the local path
         else
         {
             artifactMap = new HashMap<String, Artifact>();
             for ( Artifact artifact : dependencyArtifacts )
             {
-                try
-                {
-                    resolver.resolve( artifact, remoteRepositories, localRepository );
-
-                    artifactMap.put( ArtifactUtils.versionlessKey( artifact ), artifact );
-                }
-                catch ( ArtifactResolutionException e )
-                {
-                    verbose( "Skipping: " + e.getArtifactId() + ". It cannot be resolved." );
-                }
-                catch ( ArtifactNotFoundException e )
-                {
-                    verbose( "Skipping: " + e.getArtifactId() + ". It cannot be resolved." );
-                }
+                String localPath = localRepository.pathOf( artifact ); 
+                artifact.setFile( new File( localRepository.getBasedir(), localPath ) );
+                artifactMap.put( ArtifactUtils.versionlessKey( artifact ), artifact );
             }
         }