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 2010/09/17 00:19:05 UTC

svn commit: r997938 - in /maven/maven-3/trunk: maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java

Author: bentmann
Date: Thu Sep 16 22:19:04 2010
New Revision: 997938

URL: http://svn.apache.org/viewvc?rev=997938&view=rev
Log:
[MNG-4814] Eary dependency resolution attempts for reactor projects prevent their later resolution from the reactor

Modified:
    maven/maven-3/trunk/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java

Modified: maven/maven-3/trunk/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java?rev=997938&r1=997937&r2=997938&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java (original)
+++ maven/maven-3/trunk/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java Thu Sep 16 22:19:04 2010
@@ -36,9 +36,11 @@ import org.codehaus.plexus.component.ann
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
+import org.sonatype.aether.ConfigurationProperties;
 import org.sonatype.aether.RepositoryCache;
 import org.sonatype.aether.RepositoryListener;
 import org.sonatype.aether.RepositorySystemSession;
+import org.sonatype.aether.util.artifact.SubArtifact;
 import org.sonatype.aether.util.listener.DefaultRepositoryEvent;
 import org.sonatype.aether.util.metadata.DefaultMetadata;
 import org.sonatype.aether.artifact.Artifact;
@@ -116,7 +118,7 @@ public class DefaultVersionResolver
 
         Key cacheKey = null;
         RepositoryCache cache = session.getCache();
-        if ( cache != null )
+        if ( cache != null && !ConfigurationProperties.get( session, "aether.versionResolver.noCache", false ) )
         {
             cacheKey = new Key( session, request );
 
@@ -248,7 +250,7 @@ public class DefaultVersionResolver
             }
         }
 
-        if ( cacheKey != null && metadata != null )
+        if ( cacheKey != null && metadata != null && isSafelyCacheable( session, artifact ) )
         {
             cache.put( session, cacheKey, new Record( result.getVersion(), result.getRepository() ) );
         }
@@ -365,6 +367,28 @@ public class DefaultVersionResolver
         return StringUtils.clean( classifier ) + ':' + StringUtils.clean( extension );
     }
 
+    private boolean isSafelyCacheable( RepositorySystemSession session, Artifact artifact )
+    {
+        /*
+         * The workspace/reactor is in flux so we better not assume definitive information for any of its
+         * artifacts/projects.
+         */
+
+        WorkspaceReader workspace = session.getWorkspaceReader();
+        if ( workspace == null )
+        {
+            return true;
+        }
+
+        Artifact pomArtifact = artifact;
+        if ( pomArtifact.getClassifier().length() > 0 || !"pom".equals( pomArtifact.getExtension() ) )
+        {
+            pomArtifact = new SubArtifact( artifact, "", "pom" );
+        }
+
+        return workspace.findArtifact( pomArtifact ) == null;
+    }
+
     private static class VersionInfo
     {
 

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java?rev=997938&r1=997937&r2=997938&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java Thu Sep 16 22:19:04 2010
@@ -96,7 +96,9 @@ public class DefaultProjectDependenciesR
                 if ( !JavaScopes.SYSTEM.equals( dep.getScope() ) && dep.getArtifact().getFile() != null )
                 {
                     // enable re-resolution
-                    dep = dep.setArtifact( dep.getArtifact().setFile( null ) );
+                    org.sonatype.aether.artifact.Artifact art = dep.getArtifact();
+                    art = art.setFile( null ).setVersion( art.getBaseVersion() );
+                    dep = dep.setArtifact( art );
                 }
                 collect.addDependency( dep );
             }