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/03/29 19:29:24 UTC

svn commit: r928842 - /maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java

Author: bentmann
Date: Mon Mar 29 17:29:24 2010
New Revision: 928842

URL: http://svn.apache.org/viewvc?rev=928842&view=rev
Log:
[MNG-4326] Maven should not check snapshot repositories for dependencies in the reactor

Modified:
    maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java?rev=928842&r1=928841&r2=928842&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java Mon Mar 29 17:29:24 2010
@@ -19,6 +19,7 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.Reader;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -108,6 +109,8 @@ public class DefaultRepositoryMetadataMa
 
         if ( !request.isOffline() )
         {
+            Date localCopyLastModified = getLocalCopyLastModified( localRepository, metadata );
+
             for ( ArtifactRepository repository : remoteRepositories )
             {
                 ArtifactRepositoryPolicy policy =
@@ -116,9 +119,46 @@ public class DefaultRepositoryMetadataMa
                 File file =
                     new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( metadata,
                                                                                                            repository ) );
+                boolean update;
+
+                if ( !policy.isEnabled() )
+                {
+                    update = false;
+
+                    if ( getLogger().isDebugEnabled() )
+                    {
+                        getLogger().debug(
+                                           "Skipping update check for " + metadata.getKey() + " (" + file
+                                               + ") from disabled repository " + repository.getId() + " ("
+                                               + repository.getUrl() + ")" );
+                    }
+                }
+                else if ( request.isForceUpdate() )
+                {
+                    update = true;
+                }
+                else if ( localCopyLastModified != null && !policy.checkOutOfDate( localCopyLastModified ) )
+                {
+                    update = false;
+
+                    if ( getLogger().isDebugEnabled() )
+                    {
+                        getLogger().debug(
+                                           "Skipping update check for " + metadata.getKey() + " (" + file
+                                               + ") from repository " + repository.getId() + " (" + repository.getUrl()
+                                               + ") in favor of local copy" );
+                    }
+                }
+                else if ( updateCheckManager.isUpdateRequired( metadata, repository, file ) )
+                {
+                    update = true;
+                }
+                else
+                {
+                    update = false;
+                }
 
-                if ( ( policy.isEnabled() && request.isForceUpdate() )
-                    || updateCheckManager.isUpdateRequired( metadata, repository, file ) )
+                if ( update )
                 {
                     getLogger().info( metadata.getKey() + ": checking for updates from " + repository.getId() );
                     try
@@ -171,6 +211,13 @@ public class DefaultRepositoryMetadataMa
         }
     }
 
+    private Date getLocalCopyLastModified( ArtifactRepository localRepository, RepositoryMetadata metadata )
+    {
+        String metadataPath = localRepository.pathOfLocalRepositoryMetadata( metadata, localRepository );
+        File metadataFile = new File( localRepository.getBasedir(), metadataPath );
+        return metadataFile.isFile() ? new Date( metadataFile.lastModified() ) : null;
+    }
+
     private static final class CacheKey
     {