mirror of https://github.com/apache/maven.git
PR: MNG-613
deploy snapshot information to the correct directory and fix some other minor issues git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@278930 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ddb34ee46d
commit
cb2370199b
|
@ -115,4 +115,24 @@ public class LatestArtifactMetadata
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getBuildNumber()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimestamp()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLatestVersion()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getReleaseVersion()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,4 +122,24 @@ public class ReleaseArtifactMetadata
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getBuildNumber()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimestamp()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLatestVersion()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getReleaseVersion()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -179,4 +179,14 @@ public class SnapshotArtifactMetadata
|
||||||
{
|
{
|
||||||
return artifact.getBaseVersion();
|
return artifact.getBaseVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getLatestVersion()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getReleaseVersion()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ public class ArtifactRepositoryMetadata
|
||||||
|
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
return "repository metadata for artifact: \'" + artifact + "\'";
|
return "repository metadata for: \'" + getKey() + "\'";
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean storedInGroupDirectory()
|
public boolean storedInGroupDirectory()
|
||||||
|
@ -84,7 +84,7 @@ public class ArtifactRepositoryMetadata
|
||||||
|
|
||||||
public String getBaseVersion()
|
public String getBaseVersion()
|
||||||
{
|
{
|
||||||
return artifact.getBaseVersion();
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void updateRepositoryMetadata( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
|
protected void updateRepositoryMetadata( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
|
||||||
|
@ -142,27 +142,6 @@ public class ArtifactRepositoryMetadata
|
||||||
Versioning v = metadata.getVersioning();
|
Versioning v = metadata.getVersioning();
|
||||||
if ( v != null )
|
if ( v != null )
|
||||||
{
|
{
|
||||||
// TODO: merge versioning (reuse code from transformation)
|
|
||||||
Snapshot s = v.getSnapshot();
|
|
||||||
Snapshot snapshot = versioning.getSnapshot();
|
|
||||||
if ( snapshot != null )
|
|
||||||
{
|
|
||||||
if ( s == null )
|
|
||||||
{
|
|
||||||
v.setSnapshot( snapshot );
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
else if ( s.getTimestamp() != null && !s.getTimestamp().equals( snapshot.getTimestamp() ) )
|
|
||||||
{
|
|
||||||
s.setTimestamp( snapshot.getTimestamp() );
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
else if ( s.getBuildNumber() != snapshot.getBuildNumber() )
|
|
||||||
{
|
|
||||||
s.setBuildNumber( snapshot.getBuildNumber() );
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( versioning.getRelease() != null )
|
if ( versioning.getRelease() != null )
|
||||||
{
|
{
|
||||||
changed = true;
|
changed = true;
|
||||||
|
@ -225,7 +204,7 @@ public class ArtifactRepositoryMetadata
|
||||||
|
|
||||||
public Snapshot getSnapshot()
|
public Snapshot getSnapshot()
|
||||||
{
|
{
|
||||||
return versioning != null ? versioning.getSnapshot() : null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLatestVersion()
|
public String getLatestVersion()
|
||||||
|
@ -237,4 +216,14 @@ public class ArtifactRepositoryMetadata
|
||||||
{
|
{
|
||||||
return versioning.getRelease();
|
return versioning.getRelease();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getBuildNumber()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimestamp()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,7 +98,7 @@ public class DefaultRepositoryMetadataManager
|
||||||
File file = new File( localRepository.getBasedir(),
|
File file = new File( localRepository.getBasedir(),
|
||||||
localRepository.pathOfLocalRepositoryMetadata( metadata, remoteRepository ) );
|
localRepository.pathOfLocalRepositoryMetadata( metadata, remoteRepository ) );
|
||||||
|
|
||||||
resolveAlways( metadata, localRepository, file, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
|
resolveAlways( metadata, remoteRepository, file, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resolveAlways( ArtifactMetadata metadata, ArtifactRepository repository, File file,
|
private void resolveAlways( ArtifactMetadata metadata, ArtifactRepository repository, File file,
|
||||||
|
|
|
@ -199,4 +199,24 @@ public class GroupRepositoryMetadata
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getBuildNumber()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimestamp()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLatestVersion()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getReleaseVersion()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,218 @@
|
||||||
|
package org.apache.maven.artifact.repository.metadata;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2001-2005 The Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.artifact.Artifact;
|
||||||
|
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||||
|
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
|
||||||
|
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
|
||||||
|
import org.codehaus.plexus.util.IOUtil;
|
||||||
|
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.io.Writer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metadata for the artifact version directory of the repository.
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
|
||||||
|
* @version $Id$
|
||||||
|
* @todo split instantiation (versioning, plugin mappings) from definition
|
||||||
|
*/
|
||||||
|
public class SnapshotArtifactRepositoryMetadata
|
||||||
|
extends AbstractRepositoryMetadata
|
||||||
|
{
|
||||||
|
private Snapshot snapshot;
|
||||||
|
|
||||||
|
private Artifact artifact;
|
||||||
|
|
||||||
|
public SnapshotArtifactRepositoryMetadata( Artifact artifact )
|
||||||
|
{
|
||||||
|
this.artifact = artifact;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SnapshotArtifactRepositoryMetadata( Artifact artifact, Snapshot snapshot )
|
||||||
|
{
|
||||||
|
this.snapshot = snapshot;
|
||||||
|
this.artifact = artifact;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return "repository metadata for: \'" + getKey() + "\'";
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean storedInGroupDirectory()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean storedInArtifactVersionDirectory()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGroupId()
|
||||||
|
{
|
||||||
|
return artifact.getGroupId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getArtifactId()
|
||||||
|
{
|
||||||
|
return artifact.getArtifactId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBaseVersion()
|
||||||
|
{
|
||||||
|
return artifact.getBaseVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void updateRepositoryMetadata( ArtifactRepository localRepository, ArtifactRepository remoteRepository )
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
MetadataXpp3Reader mappingReader = new MetadataXpp3Reader();
|
||||||
|
|
||||||
|
Metadata metadata = null;
|
||||||
|
|
||||||
|
File metadataFile = new File( localRepository.getBasedir(),
|
||||||
|
localRepository.pathOfLocalRepositoryMetadata( this, remoteRepository ) );
|
||||||
|
|
||||||
|
if ( metadataFile.exists() )
|
||||||
|
{
|
||||||
|
Reader reader = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
reader = new FileReader( metadataFile );
|
||||||
|
|
||||||
|
metadata = mappingReader.read( reader );
|
||||||
|
}
|
||||||
|
catch ( FileNotFoundException e )
|
||||||
|
{
|
||||||
|
// TODO: Log a warning
|
||||||
|
}
|
||||||
|
catch ( IOException e )
|
||||||
|
{
|
||||||
|
// TODO: Log a warning
|
||||||
|
}
|
||||||
|
catch ( XmlPullParserException e )
|
||||||
|
{
|
||||||
|
// TODO: Log a warning
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
IOUtil.close( reader );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean changed = false;
|
||||||
|
|
||||||
|
// If file could not be found or was not valid, start from scratch
|
||||||
|
if ( metadata == null )
|
||||||
|
{
|
||||||
|
metadata = new Metadata();
|
||||||
|
|
||||||
|
metadata.setGroupId( artifact.getGroupId() );
|
||||||
|
metadata.setArtifactId( artifact.getArtifactId() );
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( snapshot != null )
|
||||||
|
{
|
||||||
|
Versioning v = metadata.getVersioning();
|
||||||
|
if ( v == null )
|
||||||
|
{
|
||||||
|
v = new Versioning();
|
||||||
|
metadata.setVersioning( v );
|
||||||
|
}
|
||||||
|
|
||||||
|
Snapshot s = v.getSnapshot();
|
||||||
|
if ( s == null )
|
||||||
|
{
|
||||||
|
v.setSnapshot( snapshot );
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
else if ( s.getTimestamp() != null && !s.getTimestamp().equals( snapshot.getTimestamp() ) )
|
||||||
|
{
|
||||||
|
s.setTimestamp( snapshot.getTimestamp() );
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
else if ( s.getBuildNumber() != snapshot.getBuildNumber() )
|
||||||
|
{
|
||||||
|
s.setBuildNumber( snapshot.getBuildNumber() );
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( changed )
|
||||||
|
{
|
||||||
|
Writer writer = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
metadataFile.getParentFile().mkdirs();
|
||||||
|
writer = new FileWriter( metadataFile );
|
||||||
|
|
||||||
|
MetadataXpp3Writer mappingWriter = new MetadataXpp3Writer();
|
||||||
|
|
||||||
|
mappingWriter.write( writer, metadata );
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
IOUtil.close( writer );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
metadataFile.setLastModified( System.currentTimeMillis() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getKey()
|
||||||
|
{
|
||||||
|
return artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getBaseVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSnapshot()
|
||||||
|
{
|
||||||
|
return artifact.isSnapshot();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBuildNumber()
|
||||||
|
{
|
||||||
|
return snapshot != null ? snapshot.getBuildNumber() : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimestamp()
|
||||||
|
{
|
||||||
|
return snapshot != null ? snapshot.getTimestamp() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLatestVersion()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getReleaseVersion()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,7 +27,7 @@ import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
|
||||||
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
|
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
|
||||||
import org.apache.maven.artifact.repository.metadata.Metadata;
|
import org.apache.maven.artifact.repository.metadata.Metadata;
|
||||||
import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
|
import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
|
||||||
import org.apache.maven.artifact.repository.metadata.Snapshot;
|
import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
|
||||||
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
|
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
|
||||||
import org.apache.maven.wagon.ResourceDoesNotExistException;
|
import org.apache.maven.wagon.ResourceDoesNotExistException;
|
||||||
import org.codehaus.plexus.logging.AbstractLogEnabled;
|
import org.codehaus.plexus.logging.AbstractLogEnabled;
|
||||||
|
@ -68,7 +68,15 @@ public abstract class AbstractVersionTransformation
|
||||||
throws ArtifactMetadataRetrievalException
|
throws ArtifactMetadataRetrievalException
|
||||||
{
|
{
|
||||||
// TODO: can we improve on this?
|
// TODO: can we improve on this?
|
||||||
ArtifactMetadata metadata = new ArtifactRepositoryMetadata( artifact );
|
ArtifactMetadata metadata = null;
|
||||||
|
if ( artifact.isSnapshot() )
|
||||||
|
{
|
||||||
|
metadata = new ArtifactRepositoryMetadata( artifact );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
metadata = new SnapshotArtifactRepositoryMetadata( artifact );
|
||||||
|
}
|
||||||
|
|
||||||
repositoryMetadataManager.resolve( metadata, remoteRepositories, localRepository );
|
repositoryMetadataManager.resolve( metadata, remoteRepositories, localRepository );
|
||||||
|
|
||||||
|
@ -86,7 +94,7 @@ public abstract class AbstractVersionTransformation
|
||||||
|
|
||||||
String version = selectVersion( versioning, artifact.getVersion() );
|
String version = selectVersion( versioning, artifact.getVersion() );
|
||||||
*/
|
*/
|
||||||
ArtifactRepositoryMetadata localMetadata = null;
|
ArtifactMetadata localMetadata = null;
|
||||||
for ( Iterator i = remoteRepositories.iterator(); i.hasNext(); )
|
for ( Iterator i = remoteRepositories.iterator(); i.hasNext(); )
|
||||||
{
|
{
|
||||||
ArtifactRepository repository = (ArtifactRepository) i.next();
|
ArtifactRepository repository = (ArtifactRepository) i.next();
|
||||||
|
@ -99,8 +107,7 @@ public abstract class AbstractVersionTransformation
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ArtifactRepositoryMetadata m = loadVersioningInformation( metadata, localRepository, localRepository,
|
ArtifactMetadata m = loadVersioningInformation( metadata, localRepository, localRepository, artifact );
|
||||||
artifact );
|
|
||||||
if ( m != null )
|
if ( m != null )
|
||||||
{
|
{
|
||||||
localMetadata = m;
|
localMetadata = m;
|
||||||
|
@ -147,22 +154,20 @@ public abstract class AbstractVersionTransformation
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Snapshot resolveLatestSnapshotVersion( Artifact artifact, ArtifactRepository localRepository,
|
protected int resolveLatestSnapshotBuildNumber( Artifact artifact, ArtifactRepository localRepository,
|
||||||
ArtifactRepository remoteRepository )
|
ArtifactRepository remoteRepository )
|
||||||
throws ArtifactMetadataRetrievalException
|
throws ArtifactMetadataRetrievalException
|
||||||
{
|
{
|
||||||
// TODO: can we improve on this?
|
// TODO: can we improve on this?
|
||||||
ArtifactMetadata metadata = new ArtifactRepositoryMetadata( artifact );
|
ArtifactMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact );
|
||||||
|
|
||||||
|
getLogger().info( "Retrieving previous build number from " + remoteRepository.getId() );
|
||||||
repositoryMetadataManager.resolveAlways( metadata, localRepository, remoteRepository );
|
repositoryMetadataManager.resolveAlways( metadata, localRepository, remoteRepository );
|
||||||
|
|
||||||
ArtifactRepositoryMetadata m = loadVersioningInformation( metadata, remoteRepository, localRepository,
|
ArtifactMetadata m = loadVersioningInformation( metadata, remoteRepository, localRepository, artifact );
|
||||||
artifact );
|
int buildNumber = 0;
|
||||||
Snapshot snapshot;
|
|
||||||
if ( m == null )
|
if ( m == null )
|
||||||
{
|
{
|
||||||
snapshot = new Snapshot();
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
SnapshotArtifactMetadata snapshotMetadata = new SnapshotArtifactMetadata( artifact );
|
SnapshotArtifactMetadata snapshotMetadata = new SnapshotArtifactMetadata( artifact );
|
||||||
|
@ -170,8 +175,7 @@ public abstract class AbstractVersionTransformation
|
||||||
ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
|
ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
|
||||||
getLogger().warn( "Using old-style versioning metadata from remote repo for " + artifact );
|
getLogger().warn( "Using old-style versioning metadata from remote repo for " + artifact );
|
||||||
|
|
||||||
snapshot.setTimestamp( snapshotMetadata.getTimestamp() );
|
buildNumber = snapshotMetadata.getBuildNumber();
|
||||||
snapshot.setBuildNumber( snapshotMetadata.getBuildNumber() );
|
|
||||||
}
|
}
|
||||||
catch ( ResourceDoesNotExistException e1 )
|
catch ( ResourceDoesNotExistException e1 )
|
||||||
{
|
{
|
||||||
|
@ -181,12 +185,12 @@ public abstract class AbstractVersionTransformation
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
snapshot = m.getSnapshot();
|
buildNumber = m.getBuildNumber();
|
||||||
}
|
}
|
||||||
return snapshot;
|
return buildNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract String constructVersion( ArtifactRepositoryMetadata metadata );
|
protected abstract String constructVersion( ArtifactMetadata metadata );
|
||||||
|
|
||||||
/* TODO
|
/* TODO
|
||||||
private void mergeVersioning( Versioning dest, Versioning source )
|
private void mergeVersioning( Versioning dest, Versioning source )
|
||||||
|
@ -345,22 +349,32 @@ public abstract class AbstractVersionTransformation
|
||||||
return artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getBaseVersion();
|
return artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getBaseVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArtifactRepositoryMetadata loadVersioningInformation( ArtifactMetadata repoMetadata,
|
private ArtifactMetadata loadVersioningInformation( ArtifactMetadata repoMetadata,
|
||||||
ArtifactRepository remoteRepository,
|
ArtifactRepository remoteRepository,
|
||||||
ArtifactRepository localRepository,
|
ArtifactRepository localRepository, Artifact artifact )
|
||||||
Artifact artifact )
|
|
||||||
throws ArtifactMetadataRetrievalException
|
throws ArtifactMetadataRetrievalException
|
||||||
{
|
{
|
||||||
File metadataFile = new File( localRepository.getBasedir(),
|
File metadataFile = new File( localRepository.getBasedir(),
|
||||||
localRepository.pathOfLocalRepositoryMetadata( repoMetadata, remoteRepository ) );
|
localRepository.pathOfLocalRepositoryMetadata( repoMetadata, remoteRepository ) );
|
||||||
|
|
||||||
ArtifactRepositoryMetadata newMetadata = null;
|
ArtifactMetadata newMetadata = null;
|
||||||
if ( metadataFile.exists() )
|
if ( metadataFile.exists() )
|
||||||
{
|
{
|
||||||
Metadata metadata = readMetadata( metadataFile );
|
Metadata metadata = readMetadata( metadataFile );
|
||||||
if ( metadata.getVersioning() != null )
|
if ( metadata.getVersioning() != null )
|
||||||
{
|
{
|
||||||
newMetadata = new ArtifactRepositoryMetadata( artifact, metadata.getVersioning() );
|
if ( artifact.isSnapshot() )
|
||||||
|
{
|
||||||
|
if ( metadata.getVersioning().getSnapshot() != null )
|
||||||
|
{
|
||||||
|
newMetadata = new SnapshotArtifactRepositoryMetadata( artifact,
|
||||||
|
metadata.getVersioning().getSnapshot() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newMetadata = new ArtifactRepositoryMetadata( artifact, metadata.getVersioning() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return newMetadata;
|
return newMetadata;
|
||||||
|
|
|
@ -22,7 +22,6 @@ import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
|
||||||
import org.apache.maven.artifact.metadata.LatestArtifactMetadata;
|
import org.apache.maven.artifact.metadata.LatestArtifactMetadata;
|
||||||
import org.apache.maven.artifact.metadata.LegacyArtifactMetadata;
|
import org.apache.maven.artifact.metadata.LegacyArtifactMetadata;
|
||||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||||
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
|
|
||||||
import org.apache.maven.artifact.repository.metadata.Versioning;
|
import org.apache.maven.artifact.repository.metadata.Versioning;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -69,7 +68,7 @@ public class LatestArtifactTransformation
|
||||||
return metadata;
|
return metadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String constructVersion( ArtifactRepositoryMetadata metadata )
|
protected String constructVersion( ArtifactMetadata metadata )
|
||||||
{
|
{
|
||||||
return metadata.getLatestVersion();
|
return metadata.getLatestVersion();
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,11 +17,11 @@ package org.apache.maven.artifact.transform;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.apache.maven.artifact.Artifact;
|
import org.apache.maven.artifact.Artifact;
|
||||||
|
import org.apache.maven.artifact.metadata.ArtifactMetadata;
|
||||||
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
|
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
|
||||||
import org.apache.maven.artifact.metadata.LegacyArtifactMetadata;
|
import org.apache.maven.artifact.metadata.LegacyArtifactMetadata;
|
||||||
import org.apache.maven.artifact.metadata.ReleaseArtifactMetadata;
|
import org.apache.maven.artifact.metadata.ReleaseArtifactMetadata;
|
||||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||||
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ public class ReleaseArtifactTransformation
|
||||||
return new ReleaseArtifactMetadata( artifact );
|
return new ReleaseArtifactMetadata( artifact );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String constructVersion( ArtifactRepositoryMetadata metadata )
|
protected String constructVersion( ArtifactMetadata metadata )
|
||||||
{
|
{
|
||||||
return metadata.getReleaseVersion();
|
return metadata.getReleaseVersion();
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,9 +22,8 @@ import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
|
||||||
import org.apache.maven.artifact.metadata.LegacyArtifactMetadata;
|
import org.apache.maven.artifact.metadata.LegacyArtifactMetadata;
|
||||||
import org.apache.maven.artifact.metadata.SnapshotArtifactMetadata;
|
import org.apache.maven.artifact.metadata.SnapshotArtifactMetadata;
|
||||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||||
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
|
|
||||||
import org.apache.maven.artifact.repository.metadata.Snapshot;
|
import org.apache.maven.artifact.repository.metadata.Snapshot;
|
||||||
import org.apache.maven.artifact.repository.metadata.Versioning;
|
import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
|
||||||
import org.codehaus.plexus.util.StringUtils;
|
import org.codehaus.plexus.util.StringUtils;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
@ -57,11 +56,7 @@ public class SnapshotTransformation
|
||||||
if ( artifact.isSnapshot() )
|
if ( artifact.isSnapshot() )
|
||||||
{
|
{
|
||||||
// TODO: Better way to create this - should have to construct Versioning
|
// TODO: Better way to create this - should have to construct Versioning
|
||||||
Versioning versioning = new Versioning();
|
ArtifactMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact );
|
||||||
Snapshot snapshot = new Snapshot();
|
|
||||||
versioning.setSnapshot( snapshot );
|
|
||||||
|
|
||||||
ArtifactMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
|
|
||||||
|
|
||||||
// TODO: should merge with other repository metadata sitting on the same level?
|
// TODO: should merge with other repository metadata sitting on the same level?
|
||||||
artifact.addMetadata( metadata );
|
artifact.addMetadata( metadata );
|
||||||
|
@ -74,15 +69,14 @@ public class SnapshotTransformation
|
||||||
{
|
{
|
||||||
if ( artifact.isSnapshot() )
|
if ( artifact.isSnapshot() )
|
||||||
{
|
{
|
||||||
Snapshot snapshot = resolveLatestSnapshotVersion( artifact, localRepository, remoteRepository );
|
int buildNumber = resolveLatestSnapshotBuildNumber( artifact, localRepository, remoteRepository );
|
||||||
snapshot.setTimestamp( getDeploymentTimestamp() );
|
|
||||||
snapshot.setBuildNumber( snapshot.getBuildNumber() + 1 );
|
|
||||||
|
|
||||||
// TODO: Better way to create this - should have to construct Versioning
|
// TODO: Better way to create this - should have to construct Versioning
|
||||||
Versioning versioning = new Versioning();
|
Snapshot snapshot = new Snapshot();
|
||||||
versioning.setSnapshot( snapshot );
|
snapshot.setTimestamp( getDeploymentTimestamp() );
|
||||||
|
snapshot.setBuildNumber( buildNumber + 1 );
|
||||||
|
|
||||||
ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
|
ArtifactMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact, snapshot );
|
||||||
|
|
||||||
artifact.setResolvedVersion( constructVersion( metadata ) );
|
artifact.setResolvedVersion( constructVersion( metadata ) );
|
||||||
|
|
||||||
|
@ -104,23 +98,19 @@ public class SnapshotTransformation
|
||||||
return new SnapshotArtifactMetadata( artifact );
|
return new SnapshotArtifactMetadata( artifact );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String constructVersion( ArtifactRepositoryMetadata metadata )
|
protected String constructVersion( ArtifactMetadata metadata )
|
||||||
{
|
{
|
||||||
String version = metadata.getBaseVersion();
|
String version = metadata.getBaseVersion();
|
||||||
Snapshot snapshot = metadata.getSnapshot();
|
if ( metadata.getTimestamp() != null && metadata.getBuildNumber() > 0 )
|
||||||
if ( snapshot != null )
|
|
||||||
{
|
{
|
||||||
if ( snapshot.getTimestamp() != null && snapshot.getBuildNumber() > 0 )
|
String newVersion = metadata.getTimestamp() + "-" + metadata.getBuildNumber();
|
||||||
|
if ( version != null )
|
||||||
{
|
{
|
||||||
String newVersion = snapshot.getTimestamp() + "-" + snapshot.getBuildNumber();
|
version = StringUtils.replace( version, "SNAPSHOT", newVersion );
|
||||||
if ( version != null )
|
}
|
||||||
{
|
else
|
||||||
version = StringUtils.replace( version, "SNAPSHOT", newVersion );
|
{
|
||||||
}
|
version = newVersion;
|
||||||
else
|
|
||||||
{
|
|
||||||
version = newVersion;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return version;
|
return version;
|
||||||
|
|
|
@ -26,6 +26,7 @@ import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||||
* @todo merge with artifactmetadatasource
|
* @todo merge with artifactmetadatasource
|
||||||
* @todo retrieval exception not appropriate for store
|
* @todo retrieval exception not appropriate for store
|
||||||
* @todo not happy about the store/retrieve methods - they use "this"
|
* @todo not happy about the store/retrieve methods - they use "this"
|
||||||
|
* @todo separate specific interfaces
|
||||||
*/
|
*/
|
||||||
public interface ArtifactMetadata
|
public interface ArtifactMetadata
|
||||||
{
|
{
|
||||||
|
@ -72,4 +73,12 @@ public interface ArtifactMetadata
|
||||||
* @return the filename
|
* @return the filename
|
||||||
*/
|
*/
|
||||||
String getRemoteFilename();
|
String getRemoteFilename();
|
||||||
|
|
||||||
|
int getBuildNumber();
|
||||||
|
|
||||||
|
String getTimestamp();
|
||||||
|
|
||||||
|
String getLatestVersion();
|
||||||
|
|
||||||
|
String getReleaseVersion();
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,14 +129,15 @@ public class DeployMojo
|
||||||
artifact.addMetadata( metadata );
|
artifact.addMetadata( metadata );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: clean up
|
||||||
|
Versioning versioning = new Versioning();
|
||||||
|
versioning.addVersion( artifact.getVersion() );
|
||||||
if ( updateReleaseInfo )
|
if ( updateReleaseInfo )
|
||||||
{
|
{
|
||||||
// TODO: clean up
|
|
||||||
Versioning versioning = new Versioning();
|
|
||||||
versioning.setRelease( artifact.getVersion() );
|
versioning.setRelease( artifact.getVersion() );
|
||||||
ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
|
|
||||||
artifact.addMetadata( metadata );
|
|
||||||
}
|
}
|
||||||
|
ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
|
||||||
|
artifact.addMetadata( metadata );
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -97,14 +97,15 @@ public class InstallMojo
|
||||||
artifact.addMetadata( metadata );
|
artifact.addMetadata( metadata );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: clean up
|
||||||
|
Versioning versioning = new Versioning();
|
||||||
|
versioning.addVersion( artifact.getVersion() );
|
||||||
if ( updateReleaseInfo )
|
if ( updateReleaseInfo )
|
||||||
{
|
{
|
||||||
// TODO: clean up
|
|
||||||
Versioning versioning = new Versioning();
|
|
||||||
versioning.setRelease( artifact.getVersion() );
|
versioning.setRelease( artifact.getVersion() );
|
||||||
ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
|
|
||||||
artifact.addMetadata( metadata );
|
|
||||||
}
|
}
|
||||||
|
ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
|
||||||
|
artifact.addMetadata( metadata );
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -145,4 +145,24 @@ public class ProjectArtifactMetadata
|
||||||
{
|
{
|
||||||
return artifact.isSnapshot();
|
return artifact.isSnapshot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getLatestVersion()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getReleaseVersion()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBuildNumber()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimestamp()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue