You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/09/29 09:37:05 UTC
svn commit: r292401 - in /maven/components/trunk:
maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/
maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/
maven-artifact-manager/src/main/java/org/apac...
Author: brett
Date: Thu Sep 29 00:36:55 2005
New Revision: 292401
URL: http://svn.apache.org/viewcvs?rev=292401&view=rev
Log:
PR: MNG-230
create a local copy of the snapshot
Modified:
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java?rev=292401&r1=292400&r2=292401&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java Thu Sep 29 00:36:55 2005
@@ -34,9 +34,11 @@
import java.io.IOException;
import java.io.Reader;
import java.util.Date;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
public class DefaultRepositoryMetadataManager
@@ -100,6 +102,8 @@
// TODO: this needs to be repeated here so the merging doesn't interfere with the written metadata
// - we'd be much better having a pristine input, and an ongoing metadata for merging instead
+ Map previousMetadata = new HashMap();
+ ArtifactRepository selected = null;
for ( Iterator i = remoteRepositories.iterator(); i.hasNext(); )
{
ArtifactRepository repository = (ArtifactRepository) i.next();
@@ -109,16 +113,68 @@
if ( policy.isEnabled() )
{
- loadMetadata( metadata, repository, localRepository, true );
+ if ( loadMetadata( metadata, repository, localRepository, previousMetadata ) )
+ {
+ metadata.setRepository( repository );
+ selected = repository;
+ }
}
}
- loadMetadata( metadata, localRepository, localRepository, false );
+ if ( loadMetadata( metadata, localRepository, localRepository, previousMetadata ) )
+ {
+ selected = localRepository;
+ }
+
+ // TODO: this could be a lot nicer... should really be in the snapshot transformation?
+ if ( metadata.isSnapshot() )
+ {
+ Metadata prevMetadata = metadata.getMetadata();
+
+ for ( Iterator i = previousMetadata.keySet().iterator(); i.hasNext(); )
+ {
+ ArtifactRepository repository = (ArtifactRepository) i.next();
+ Metadata m = (Metadata) previousMetadata.get( repository );
+ if ( repository.equals( selected ) )
+ {
+ if ( m.getVersioning() == null )
+ {
+ m.setVersioning( new Versioning() );
+ }
+
+ if ( m.getVersioning().getSnapshot() == null )
+ {
+ m.getVersioning().setSnapshot( new Snapshot() );
+ }
+
+ if ( !m.getVersioning().getSnapshot().isLocalCopy() )
+ {
+ m.getVersioning().getSnapshot().setLocalCopy( true );
+ metadata.setMetadata( m );
+ metadata.storeInLocalRepository( localRepository, repository );
+ }
+ }
+ else
+ {
+ if ( m.getVersioning() != null && m.getVersioning().getSnapshot() != null &&
+ m.getVersioning().getSnapshot().isLocalCopy() )
+ {
+ m.getVersioning().getSnapshot().setLocalCopy( false );
+ metadata.setMetadata( m );
+ metadata.storeInLocalRepository( localRepository, repository );
+ }
+ }
+ }
+
+ metadata.setMetadata( prevMetadata );
+ }
}
- private void loadMetadata( RepositoryMetadata repoMetadata, ArtifactRepository remoteRepository,
- ArtifactRepository localRepository, boolean setRepository )
+ private boolean loadMetadata( RepositoryMetadata repoMetadata, ArtifactRepository remoteRepository,
+ ArtifactRepository localRepository, Map previousMetadata )
throws ArtifactMetadataRetrievalException
{
+ boolean setRepository = false;
+
File metadataFile = new File( localRepository.getBasedir(),
localRepository.pathOfLocalRepositoryMetadata( repoMetadata, remoteRepository ) );
@@ -126,25 +182,22 @@
{
Metadata metadata = readMetadata( metadataFile );
+ if ( repoMetadata.isSnapshot() && previousMetadata != null )
+ {
+ previousMetadata.put( remoteRepository, metadata );
+ }
+
if ( repoMetadata.getMetadata() != null )
{
- if ( repoMetadata.getMetadata().merge( metadata ) )
- {
- if ( setRepository )
- {
- repoMetadata.setRepository( remoteRepository );
- }
- }
+ setRepository = repoMetadata.getMetadata().merge( metadata );
}
else
{
repoMetadata.setMetadata( metadata );
- if ( setRepository )
- {
- repoMetadata.setRepository( remoteRepository );
- }
+ setRepository = true;
}
}
+ return setRepository;
}
/**
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=292401&r1=292400&r2=292401&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Thu Sep 29 00:36:55 2005
@@ -27,8 +27,10 @@
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.FileUtils;
import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
@@ -116,10 +118,10 @@
if ( !wagonManager.isOnline() )
{
getLogger().debug( "System is offline. Cannot resolve artifact: " + artifact.getId() + "." );
-
+
return;
}
-
+
try
{
if ( artifact.getRepository() != null )
@@ -146,6 +148,23 @@
catch ( TransferFailedException e )
{
throw new ArtifactResolutionException( e.getMessage(), artifact, remoteRepositories, e );
+ }
+
+ if ( artifact.isSnapshot() && !artifact.getBaseVersion().equals( artifact.getVersion() ) )
+ {
+ String version = artifact.getVersion();
+ artifact.selectVersion( artifact.getBaseVersion() );
+ File copy = new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) );
+ try
+ {
+ FileUtils.copyFile( destination, copy );
+ }
+ catch ( IOException e )
+ {
+ throw new ArtifactResolutionException( "Unable to copy resolved artifact for local use",
+ artifact, remoteRepositories, e );
+ }
+ artifact.selectVersion( version );
}
}
else if ( destination.exists() )
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java?rev=292401&r1=292400&r2=292401&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java Thu Sep 29 00:36:55 2005
@@ -107,14 +107,14 @@
Snapshot snapshot = versioning.getSnapshot();
if ( snapshot != null )
{
- if ( snapshot.isLocalCopy() )
- {
- version = baseVersion;
- }
- else if ( snapshot.getTimestamp() != null && snapshot.getBuildNumber() > 0 )
+ if ( snapshot.getTimestamp() != null && snapshot.getBuildNumber() > 0 )
{
String newVersion = snapshot.getTimestamp() + "-" + snapshot.getBuildNumber();
version = StringUtils.replace( baseVersion, "SNAPSHOT", newVersion );
+ }
+ else
+ {
+ version = baseVersion;
}
}
return version;
Modified: maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo?rev=292401&r1=292400&r2=292401&view=diff
==============================================================================
--- maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo (original)
+++ maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo Thu Sep 29 00:36:55 2005
@@ -79,9 +79,9 @@
mappedPlugin.setArtifactId( plugin.getArtifactId() );
mappedPlugin.setPrefix( plugin.getPrefix() );
-
+
mappedPlugin.setName( plugin.getName() );
-
+
addPlugin( mappedPlugin );
changed = true;
@@ -142,30 +142,22 @@
changed = true;
}
- if ( snapshot.isLocalCopy() )
+ // overwrite
+ if ( s.getTimestamp() == null ? snapshot.getTimestamp() != null
+ : !s.getTimestamp().equals( snapshot.getTimestamp() ) )
+ {
+ s.setTimestamp( snapshot.getTimestamp() );
+ changed = true;
+ }
+ if ( s.getBuildNumber() != snapshot.getBuildNumber() )
{
- s.setLocalCopy( true );
- s.setTimestamp( null );
- s.setBuildNumber( 0 );
+ s.setBuildNumber( snapshot.getBuildNumber() );
changed = true;
}
- else
+ if ( s.isLocalCopy() != snapshot.isLocalCopy() )
{
- if ( snapshot.getTimestamp() != null && !snapshot.getTimestamp().equals( s.getTimestamp() ) )
- {
- s.setTimestamp( snapshot.getTimestamp() );
- changed = true;
- }
- if ( snapshot.getBuildNumber() > 0 && s.getBuildNumber() != snapshot.getBuildNumber() )
- {
- s.setBuildNumber( snapshot.getBuildNumber() );
- changed = true;
- }
- if ( s.isLocalCopy() )
- {
- s.setLocalCopy( false );
- changed = true;
- }
+ s.setLocalCopy( snapshot.isLocalCopy() );
+ changed = true;
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org