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/02 09:16:58 UTC
svn commit: r266298 - in /maven/components/trunk: maven-artifact-manager/
maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/
maven-artifact-manager/src/main/java/org/apache/maven/artifact/installer/
maven-artifact-manager/src/main...
Author: brett
Date: Fri Sep 2 00:16:16 2005
New Revision: 266298
URL: http://svn.apache.org/viewcvs?rev=266298&view=rev
Log:
PR: MNG-613
make repository metadata behave more like snapshots with daily updates.
next step is to move the version checking to use that instead and fallback to the old files
Added:
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java (contents, props changed)
- copied, changed from r265618, maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java
Removed:
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadata.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManagementException.java
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AbstractPluginMappingMojo.java
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java
Modified:
maven/components/trunk/maven-artifact-manager/pom.xml
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/ReleaseArtifactMetadata.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/SnapshotArtifactMetadata.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java
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/AbstractVersionTransformation.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/AbstractArtifactMetadata.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/VersionArtifactMetadata.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/ArtifactRepositoryLayout.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/LegacyRepositoryLayout.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginMappingManager.java
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactMetadata.java
maven/components/trunk/maven-repository-metadata/src/main/mdo/metadata.mdo
Modified: maven/components/trunk/maven-artifact-manager/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/pom.xml?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/pom.xml (original)
+++ maven/components/trunk/maven-artifact-manager/pom.xml Fri Sep 2 00:16:16 2005
@@ -1,5 +1,5 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.maven</groupId>
@@ -15,6 +15,11 @@
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
+ <version>2.0-beta-1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-repository-metadata</artifactId>
<version>2.0-beta-1-SNAPSHOT</version>
</dependency>
<dependency>
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java Fri Sep 2 00:16:16 2005
@@ -71,6 +71,7 @@
for ( Iterator i = artifact.getMetadataList().iterator(); i.hasNext(); )
{
ArtifactMetadata metadata = (ArtifactMetadata) i.next();
+ // TODO: method should be on repository?
metadata.storeInLocalRepository( localRepository );
// TODO: shouldn't need to calculate this
File f = new File( localRepository.getBasedir(), localRepository.pathOfArtifactMetadata( metadata ) );
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java Fri Sep 2 00:16:16 2005
@@ -34,7 +34,9 @@
{
private ArtifactTransformationManager transformationManager;
- /** @deprecated we want to use the artifact method only, and ensure artifact.file is set correctly. */
+ /**
+ * @deprecated we want to use the artifact method only, and ensure artifact.file is set correctly.
+ */
public void install( String basedir, String finalName, Artifact artifact, ArtifactRepository localRepository )
throws ArtifactInstallationException
{
@@ -68,7 +70,8 @@
for ( Iterator i = artifact.getMetadataList().iterator(); i.hasNext(); )
{
ArtifactMetadata metadata = (ArtifactMetadata) i.next();
-
+
+ // TODO: method should be on repository?
metadata.storeInLocalRepository( localRepository );
}
}
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java Fri Sep 2 00:16:16 2005
@@ -21,7 +21,6 @@
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
import org.apache.maven.artifact.repository.DefaultArtifactRepository;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
import org.apache.maven.wagon.ConnectionException;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
@@ -99,14 +98,6 @@
putRemoteFile( repository, source, repository.pathOfArtifactMetadata( artifactMetadata ), null );
}
- public void putRepositoryMetadata( File source, RepositoryMetadata metadata, ArtifactRepository repository )
- throws TransferFailedException
- {
- getLogger().info( "Uploading " + metadata );
-
- putRemoteFile( repository, source, repository.pathOfRepositoryMetadata( metadata ), null );
- }
-
private void putRemoteFile( ArtifactRepository repository, File source, String remotePath,
TransferListener downloadMonitor )
throws TransferFailedException
@@ -261,17 +252,6 @@
getLogger().info( "Retrieving " + metadata );
getRemoteFile( repository, destination, remotePath, null, checksumPolicy );
- }
-
- public void getRepositoryMetadata( RepositoryMetadata metadata, ArtifactRepository remoteRepository,
- File destination )
- throws TransferFailedException, ResourceDoesNotExistException
- {
- String remotePath = remoteRepository.pathOfRepositoryMetadata( metadata );
-
- getLogger().info( "Retrieving " + metadata );
-
- getRemoteFile( remoteRepository, destination, remotePath, null, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
}
private void getRemoteFile( ArtifactRepository repository, File destination, String remotePath,
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java Fri Sep 2 00:16:16 2005
@@ -19,7 +19,6 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
import org.apache.maven.wagon.UnsupportedProtocolException;
@@ -56,12 +55,6 @@
void getArtifactMetadata( ArtifactMetadata metadata, ArtifactRepository remoteRepository, File destination,
String checksumPolicy )
- throws TransferFailedException, ResourceDoesNotExistException;
-
- void putRepositoryMetadata( File source, RepositoryMetadata metadata, ArtifactRepository repository )
- throws TransferFailedException;
-
- void getRepositoryMetadata( RepositoryMetadata metadata, ArtifactRepository remoteRepository, File destination )
throws TransferFailedException, ResourceDoesNotExistException;
void addProxy( String protocol, String host, int port, String username, String password, String nonProxyHosts );
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java Fri Sep 2 00:16:16 2005
@@ -91,9 +91,13 @@
return Artifact.LATEST_VERSION;
}
- public boolean storedInArtifactDirectory()
+ public boolean storedInArtifactVersionDirectory()
{
return false;
}
+ public boolean isSnapshot()
+ {
+ return false;
+ }
}
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/ReleaseArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/ReleaseArtifactMetadata.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/ReleaseArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/ReleaseArtifactMetadata.java Fri Sep 2 00:16:16 2005
@@ -99,9 +99,13 @@
return ReleaseArtifactTransformation.RELEASE_VERSION;
}
- public boolean storedInArtifactDirectory()
+ public boolean storedInArtifactVersionDirectory()
{
return false;
}
+ public boolean isSnapshot()
+ {
+ return false;
+ }
}
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/SnapshotArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/SnapshotArtifactMetadata.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/SnapshotArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/SnapshotArtifactMetadata.java Fri Sep 2 00:16:16 2005
@@ -80,7 +80,7 @@
buildNumber = 0;
}
}
-
+
public void setVersion( String timestamp, int buildNumber )
{
this.timestamp = timestamp;
@@ -91,7 +91,7 @@
{
return timestamp;
}
-
+
public int getBuildNumber()
{
return buildNumber;
@@ -156,5 +156,20 @@
public String toString()
{
return "snapshot information for " + artifact.getArtifactId() + " " + artifact.getBaseVersion();
+ }
+
+ public boolean storedInArtifactVersionDirectory()
+ {
+ return true;
+ }
+
+ public boolean isSnapshot()
+ {
+ return true;
+ }
+
+ public String getBaseVersion()
+ {
+ return artifact.getBaseVersion();
}
}
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java Fri Sep 2 00:16:16 2005
@@ -19,7 +19,6 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
import org.apache.maven.wagon.repository.Repository;
/**
@@ -80,11 +79,6 @@
public String pathOfArtifactMetadata( ArtifactMetadata artifactMetadata )
{
return layout.pathOfArtifactMetadata( artifactMetadata );
- }
-
- public String pathOfRepositoryMetadata( RepositoryMetadata metadata )
- {
- return layout.pathOfRepositoryMetadata( metadata );
}
public ArtifactRepositoryLayout getLayout()
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=266298&r1=266297&r2=266298&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 Fri Sep 2 00:16:16 2005
@@ -17,14 +17,16 @@
*/
import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
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.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -38,106 +40,77 @@
private WagonManager wagonManager;
/**
- * @todo very primitve. Probably we can cache artifacts themselves in a central location, as well as reset the flag over time in a long running process.
+ * @todo very primitive. Probably we can cache artifacts themselves in a central location, as well as reset the flag over time in a long running process.
*/
private Set cachedMetadata = new HashSet();
- public void resolve( RepositoryMetadata metadata, List repositories, ArtifactRepository local )
- throws RepositoryMetadataManagementException
+ public void resolve( ArtifactMetadata metadata, List remoteRepositories, ArtifactRepository localRepository )
+ throws ArtifactMetadataRetrievalException
{
boolean alreadyResolved = alreadyResolved( metadata );
if ( !alreadyResolved )
{
- for ( Iterator i = repositories.iterator(); i.hasNext(); )
+ File file = new File( localRepository.getBasedir(), localRepository.pathOfArtifactMetadata( metadata ) );
+
+ boolean checkedUpdates = false;
+ for ( Iterator i = remoteRepositories.iterator(); i.hasNext(); )
{
ArtifactRepository repository = (ArtifactRepository) i.next();
- // TODO: replace with a more general repository update mechanism like artifact metadata uses
- // (Actually, this should now supersede artifact metadata...)
- File metadataFile = new File( local.getBasedir(), local.pathOfRepositoryMetadata( metadata ) );
+ ArtifactRepositoryPolicy policy = metadata.isSnapshot() ? repository.getSnapshots()
+ : repository.getReleases();
- if ( !metadataFile.exists() )
+ if ( policy == null || !policy.isEnabled() )
{
- try
+ getLogger().debug( "Skipping disabled repository " + repository.getId() );
+ }
+ else
+ {
+ // TODO: should be able to calculate this less often
+ boolean checkForUpdates = policy.checkOutOfDate( new Date( file.lastModified() ) );
+
+ if ( checkForUpdates )
{
+ checkedUpdates = true;
+
+ getLogger().info( metadata.getKey() + ": checking for updates from " + repository.getId() );
+
try
{
- wagonManager.getRepositoryMetadata( metadata, repository, metadataFile );
+ wagonManager.getArtifactMetadata( metadata, repository, file, policy.getChecksumPolicy() );
+ // TODO: ???
+// metadata.setRepository( repository );
}
catch ( ResourceDoesNotExistException e )
{
- if ( !metadataFile.exists() )
- {
- throw new RepositoryMetadataManagementException( metadata,
- "Remote repository metadata not found.",
- e );
- }
- else
- {
- String message = "Cannot find " + metadata +
- " in remote repository - Using local copy.";
-
- getLogger().info( message );
-
- getLogger().debug( message, e );
- }
+ getLogger().info( "Repository metadata " + metadata +
+ " could not be found on repository: " + repository.getId(), e );
+ }
+ catch ( TransferFailedException e )
+ {
+ throw new ArtifactMetadataRetrievalException( "Unable to retrieve metadata", e );
}
- }
- catch ( TransferFailedException e )
- {
- throw new RepositoryMetadataManagementException( metadata,
- "Failed to download repository metadata.", e );
}
}
- else
- {
- getLogger().info( "Using local copy of " + metadata + " from: " + metadataFile );
- }
-
- cachedMetadata.add( metadata.getRepositoryPath() );
}
- }
- }
- public void deploy( File source, RepositoryMetadata metadata, ArtifactRepository remote )
- throws RepositoryMetadataManagementException
- {
- try
- {
- wagonManager.putRepositoryMetadata( source, metadata, remote );
- }
- catch ( TransferFailedException e )
- {
- throw new RepositoryMetadataManagementException( metadata, "Failed to upload repository metadata.", e );
- }
-
- }
-
- public void install( File source, RepositoryMetadata metadata, ArtifactRepository local )
- throws RepositoryMetadataManagementException
- {
- File metadataFile = new File( local.getBasedir(), local.pathOfRepositoryMetadata( metadata ) );
-
- try
- {
- File dir = metadataFile.getParentFile();
-
- if ( !dir.exists() )
+ // touch the file if it was checked for updates, but don't create it if it doesn't exist to avoid
+ // storing SNAPSHOT as the actual version which doesn't exist remotely.
+ if ( checkedUpdates )
{
- dir.mkdirs();
+ if ( file.exists() )
+ {
+ file.setLastModified( System.currentTimeMillis() );
+ }
}
- FileUtils.copyFile( source, metadataFile );
+ cachedMetadata.add( metadata.getKey() );
}
- catch ( IOException e )
- {
- throw new RepositoryMetadataManagementException( metadata, "Failed to install repository metadata.", e );
- }
-
}
- private boolean alreadyResolved( RepositoryMetadata metadata )
+ private boolean alreadyResolved( ArtifactMetadata metadata )
{
- return cachedMetadata.contains( metadata.getRepositoryPath() );
+ return cachedMetadata.contains( metadata.getKey() );
}
+
}
Copied: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java (from r265618, maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java)
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java?p2=maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java&p1=maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java&r1=265618&r2=266298&rev=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java Fri Sep 2 00:16:16 2005
@@ -16,8 +16,33 @@
* limitations under the License.
*/
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+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;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * Metadata for the group directory of the repository.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id$
+ */
public class GroupRepositoryMetadata
- implements RepositoryMetadata
+ implements ArtifactMetadata
{
/**
* TODO: reuse.
@@ -26,19 +51,166 @@
private final String groupId;
+ private Map pluginMappings = new HashMap();
+
public GroupRepositoryMetadata( String groupId )
{
this.groupId = groupId;
}
- public String getRepositoryPath()
+ public String toString()
{
- return groupId + "/" + METADATA_FILE;
+ return "repository metadata for group: \'" + groupId + "\'";
}
- public String toString()
+ public void storeInLocalRepository( ArtifactRepository localRepository )
+ throws ArtifactMetadataRetrievalException
{
- return "repository metadata for group: \'" + groupId + "\'";
+ if ( !pluginMappings.isEmpty() )
+ {
+ try
+ {
+ updateRepositoryMetadata( localRepository );
+ }
+ catch ( IOException e )
+ {
+ throw new ArtifactMetadataRetrievalException( "Error updating group repository metadata", e );
+ }
+ }
+ }
+
+ public String getFilename()
+ {
+ return METADATA_FILE;
+ }
+
+ public boolean storedInGroupDirectory()
+ {
+ return true;
+ }
+
+ public boolean storedInArtifactVersionDirectory()
+ {
+ return false;
+ }
+
+ public String getGroupId()
+ {
+ return groupId;
+ }
+
+ public String getArtifactId()
+ {
+ return null;
+ }
+
+ public String getBaseVersion()
+ {
+ return null;
+ }
+
+ public void addPluginMapping( String goalPrefix, String artifactId )
+ {
+ pluginMappings.put( goalPrefix, artifactId );
}
+ private void updateRepositoryMetadata( ArtifactRepository localRepository )
+ throws IOException
+ {
+ MetadataXpp3Reader mappingReader = new MetadataXpp3Reader();
+
+ Metadata pluginMap = null;
+
+ File metadataFile = new File( localRepository.getBasedir(), localRepository.pathOfArtifactMetadata( this ) );
+
+ if ( metadataFile.exists() )
+ {
+ Reader reader = null;
+
+ try
+ {
+ reader = new FileReader( metadataFile );
+
+ pluginMap = 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 );
+ }
+ }
+
+ // If file could not be found or was not valid, start from scratch
+ if ( pluginMap == null )
+ {
+ pluginMap = new Metadata();
+
+ pluginMap.setGroupId( groupId );
+ }
+
+ for ( Iterator i = pluginMappings.keySet().iterator(); i.hasNext(); )
+ {
+ String prefix = (String) i.next();
+ boolean found = false;
+
+ for ( Iterator it = pluginMap.getPlugins().iterator(); it.hasNext() && !found; )
+ {
+ Plugin preExisting = (Plugin) it.next();
+
+ if ( preExisting.getPrefix().equals( prefix ) )
+ {
+ // TODO: log
+// getLog().info( "Plugin-mapping metadata for prefix: " + prefix + " already exists. Skipping." );
+
+ found = true;
+ }
+ }
+
+ if ( !found )
+ {
+ Plugin mappedPlugin = new Plugin();
+
+ mappedPlugin.setArtifactId( (String) pluginMappings.get( prefix ) );
+
+ mappedPlugin.setPrefix( prefix );
+
+ pluginMap.addPlugin( mappedPlugin );
+ }
+ }
+
+ Writer writer = null;
+ try
+ {
+ writer = new FileWriter( metadataFile );
+
+ MetadataXpp3Writer mappingWriter = new MetadataXpp3Writer();
+
+ mappingWriter.write( writer, pluginMap );
+ }
+ finally
+ {
+ IOUtil.close( writer );
+ }
+ }
+
+ public Object getKey()
+ {
+ return groupId;
+ }
+
+ public boolean isSnapshot()
+ {
+ return false;
+ }
}
Propchange: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/GroupRepositoryMetadata.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
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=266298&r1=266297&r2=266298&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 Fri Sep 2 00:16:16 2005
@@ -81,8 +81,8 @@
if ( !systemFile.exists() )
{
- throw new ArtifactResolutionException( "System artifact: " + artifact.getId()
- + " not found in path: " + systemFile, artifact );
+ throw new ArtifactResolutionException(
+ "System artifact: " + artifact.getId() + " not found in path: " + systemFile, artifact );
}
else
{
@@ -90,7 +90,7 @@
}
}
// skip artifacts with a file - they are already resolved
- else if ( artifact.getFile() == null )
+ else if ( !artifact.isResolved() )
{
// ----------------------------------------------------------------------
// Check for the existence of the artifact in the specified local
@@ -129,8 +129,8 @@
if ( !artifact.isResolved() )
{
throw new ArtifactResolutionException(
- "Failed to resolve artifact, possibly due to a repository list that is not appropriately equipped for this artifact's metadata.",
- artifact, remoteRepositories );
+ "Failed to resolve artifact, possibly due to a repository list that is not appropriately equipped for this artifact's metadata.",
+ artifact, remoteRepositories );
}
// must be after the artifact is downloaded
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java Fri Sep 2 00:16:16 2005
@@ -19,6 +19,7 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.manager.WagonManager;
import org.apache.maven.artifact.metadata.AbstractVersionArtifactMetadata;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
import org.apache.maven.artifact.metadata.VersionArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -52,6 +53,52 @@
protected String resolveVersion( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories )
throws ArtifactMetadataRetrievalException
{
+ ArtifactMetadata localMetadata = resolveMetadata( artifact, localRepository, remoteRepositories );
+
+ String version;
+
+ if ( localMetadata == null )
+ {
+ version = artifact.getVersion();
+ }
+ else
+ {
+ VersionArtifactMetadata versionMetadata = (VersionArtifactMetadata) localMetadata;
+ version = versionMetadata.constructVersion();
+ }
+
+ // TODO: also do this logging for other metadata?
+ if ( getLogger().isDebugEnabled() )
+ {
+ if ( version != null && !version.equals( artifact.getBaseVersion() ) )
+ {
+ String message = artifact.getArtifactId() + ": resolved to version " + version;
+ if ( artifact.getRepository() != null )
+ {
+ message += " from repository " + artifact.getRepository().getId();
+ }
+ else
+ {
+ message += " from local repository";
+ }
+ getLogger().debug( message );
+ }
+ }
+ return version;
+ }
+
+ /**
+ * @param artifact
+ * @param localRepository
+ * @param remoteRepositories
+ * @return
+ * @throws ArtifactMetadataRetrievalException
+ * @todo share with DefaultRepositoryMetadataManager
+ */
+ private ArtifactMetadata resolveMetadata( Artifact artifact, ArtifactRepository localRepository,
+ List remoteRepositories )
+ throws ArtifactMetadataRetrievalException
+ {
VersionArtifactMetadata localMetadata;
try
{
@@ -116,9 +163,9 @@
}
}
- // touch the file if it was checked for updates, but don't create it if it doesn't exist to avoid
+ // touch the file if it was checked for updates, but don't create it if it doesn't exist remotely to avoid
// storing SNAPSHOT as the actual version which doesn't exist remotely.
- if ( checkedUpdates && localMetadata.exists() )
+ if ( checkedUpdates && localMetadata.getLastModified().getTime() > 0 )
{
localMetadata.storeInLocalRepository( localRepository );
}
@@ -126,44 +173,22 @@
resolvedArtifactCache.add( getCacheKey( artifact ) );
}
- String version = localMetadata.constructVersion();
-
// TODO: if the POM and JAR are inconsistent, this might mean that different version of each are used
- if ( !artifact.getFile().exists() || localMetadata.newerThanFile( artifact.getFile() ) )
- {
- if ( getLogger().isInfoEnabled() && !alreadyResolved )
- {
- if ( version != null && !version.equals( artifact.getBaseVersion() ) )
- {
- String message = artifact.getArtifactId() + ": resolved to version " + version;
- if ( artifact.getRepository() != null )
- {
- message += " from repository " + artifact.getRepository().getId();
- }
- else
- {
- message += " from local repository";
- }
- getLogger().info( message );
- }
- }
-
- return version;
- }
- else
+ if ( artifact.getFile().exists() && !localMetadata.newerThanFile( artifact.getFile() ) )
{
- if ( getLogger().isInfoEnabled() && !alreadyResolved )
+ if ( getLogger().isDebugEnabled() && !alreadyResolved )
{
// Locally installed file is newer, don't use the resolved version
- getLogger().info( artifact.getArtifactId() + ": using locally installed snapshot" );
+ getLogger().debug( artifact.getArtifactId() + ": using locally installed snapshot" );
}
- return artifact.getVersion();
+ localMetadata = null;
}
+ return localMetadata;
}
protected VersionArtifactMetadata retrieveFromRemoteRepository( Artifact artifact,
ArtifactRepository remoteRepository,
- VersionArtifactMetadata localMetadata,
+ ArtifactMetadata localMetadata,
String checksumPolicy )
throws ArtifactMetadataRetrievalException, ResourceDoesNotExistException
{
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=266298&r1=266297&r2=266298&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 Fri Sep 2 00:16:16 2005
@@ -54,7 +54,8 @@
if ( artifact.isSnapshot() )
{
SnapshotArtifactMetadata metadata = new SnapshotArtifactMetadata( artifact );
- metadata.storeInLocalRepository( localRepository );
+
+ artifact.addMetadata( metadata );
}
}
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/AbstractArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/AbstractArtifactMetadata.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/AbstractArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/AbstractArtifactMetadata.java Fri Sep 2 00:16:16 2005
@@ -41,10 +41,10 @@
{
return filename;
}
-
- public boolean storedInArtifactDirectory()
+
+ public boolean storedInGroupDirectory()
{
- return true;
+ return false;
}
public String getGroupId()
@@ -62,9 +62,8 @@
return artifact.getVersion();
}
- public String getBaseVersion()
+ public Object getKey()
{
- return artifact.getBaseVersion();
+ return artifact.getGroupId() + ":" + artifact.getArtifactId();
}
-
}
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/ArtifactMetadata.java Fri Sep 2 00:16:16 2005
@@ -45,22 +45,25 @@
String getFilename();
/**
- * Whether the artifact metadata exists.
- * @return true or false
+ * Whether this metadata should be stored alongside the artifact.
*/
- boolean exists();
-
+ boolean storedInArtifactVersionDirectory();
+
/**
- * Whether this metadata should be stored alongside the artifact.
+ * Whether this metadata should be stored alongside the group.
*/
- boolean storedInArtifactDirectory();
+ boolean storedInGroupDirectory();
String getGroupId();
String getArtifactId();
- String getVersion();
-
String getBaseVersion();
+ Object getKey();
+
+ /**
+ * @Todo delete?
+ */
+ boolean isSnapshot();
}
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/VersionArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/VersionArtifactMetadata.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/VersionArtifactMetadata.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/metadata/VersionArtifactMetadata.java Fri Sep 2 00:16:16 2005
@@ -28,7 +28,6 @@
public interface VersionArtifactMetadata
extends ArtifactMetadata, Comparable
{
-
/**
* Determine if the metadata is considered newer than a given file.
*
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepository.java Fri Sep 2 00:16:16 2005
@@ -19,7 +19,6 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
/**
* Specifies the repository used for artifact handling.
@@ -32,8 +31,6 @@
String pathOf( Artifact artifact );
String pathOfArtifactMetadata( ArtifactMetadata artifactMetadata );
-
- String pathOfRepositoryMetadata( RepositoryMetadata metadata );
String getUrl();
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/ArtifactRepositoryLayout.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/ArtifactRepositoryLayout.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/ArtifactRepositoryLayout.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/ArtifactRepositoryLayout.java Fri Sep 2 00:16:16 2005
@@ -18,7 +18,6 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
/**
* @author jdcasey
@@ -32,5 +31,4 @@
String pathOfArtifactMetadata( ArtifactMetadata metadata );
- String pathOfRepositoryMetadata( RepositoryMetadata metadata );
}
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java Fri Sep 2 00:16:16 2005
@@ -19,7 +19,6 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
/**
* @author jdcasey
@@ -62,37 +61,19 @@
StringBuffer path = new StringBuffer();
path.append( formatAsDirectory( metadata.getGroupId() ) ).append( PATH_SEPARATOR );
- path.append( metadata.getArtifactId() ).append( PATH_SEPARATOR );
- if ( metadata.storedInArtifactDirectory() )
+ if ( !metadata.storedInGroupDirectory() )
{
- path.append( metadata.getBaseVersion() ).append( PATH_SEPARATOR );
+ path.append( metadata.getArtifactId() ).append( PATH_SEPARATOR );
+
+ if ( metadata.storedInArtifactVersionDirectory() )
+ {
+ path.append( metadata.getBaseVersion() ).append( PATH_SEPARATOR );
+ }
}
path.append( metadata.getFilename() );
return path.toString();
- }
-
- public String pathOfRepositoryMetadata( RepositoryMetadata metadata )
- {
- String file = metadata.getRepositoryPath();
-
- String result;
- int lastSlash = file.lastIndexOf( PATH_SEPARATOR );
-
- if ( lastSlash > -1 )
- {
- String filePart = file.substring( lastSlash );
-
- String dirPart = file.substring( 0, lastSlash );
-
- result = formatAsDirectory( dirPart ) + filePart;
- }
- else
- {
- result = file;
- }
- return result;
}
private String formatAsDirectory( String directory )
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/LegacyRepositoryLayout.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/LegacyRepositoryLayout.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/LegacyRepositoryLayout.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/LegacyRepositoryLayout.java Fri Sep 2 00:16:16 2005
@@ -19,7 +19,6 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
/**
* @author jdcasey
@@ -58,11 +57,6 @@
path.append( metadata.getFilename() );
return path.toString();
- }
-
- public String pathOfRepositoryMetadata( RepositoryMetadata metadata )
- {
- return metadata.getRepositoryPath();
}
}
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java Fri Sep 2 00:16:16 2005
@@ -16,21 +16,14 @@
* limitations under the License.
*/
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import java.io.File;
import java.util.List;
public interface RepositoryMetadataManager
{
-
- void resolve( RepositoryMetadata repositoryMetadata, List repositories, ArtifactRepository local )
- throws RepositoryMetadataManagementException;
-
- void deploy( File source, RepositoryMetadata repositoryMetadata, ArtifactRepository remote )
- throws RepositoryMetadataManagementException;
-
- void install( File source, RepositoryMetadata repositoryMetadata, ArtifactRepository local )
- throws RepositoryMetadataManagementException;
-
+ void resolve( ArtifactMetadata repositoryMetadata, List repositories, ArtifactRepository localRepository )
+ throws ArtifactMetadataRetrievalException;
}
Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java Fri Sep 2 00:16:16 2005
@@ -61,5 +61,5 @@
*/
void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository )
throws ArtifactMetadataRetrievalException;
-
+
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Fri Sep 2 00:16:16 2005
@@ -23,7 +23,6 @@
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.metadata.ResolutionGroup;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManagementException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.ArtifactResolver;
@@ -142,16 +141,9 @@
{
// TODO: since this is only used in the lifecycle executor, maybe it should be moved there? There is no other
// use for the mapping manager in here
- try
- {
- return pluginMappingManager.getByPrefix( prefix, session.getSettings().getPluginGroups(),
- project.getPluginArtifactRepositories(),
- session.getLocalRepository() );
- }
- catch ( RepositoryMetadataManagementException e )
- {
- throw new PluginManagerException( "Error getting plugin prefix", e );
- }
+ return pluginMappingManager.getByPrefix( prefix, session.getSettings().getPluginGroups(),
+ project.getPluginArtifactRepositories(),
+ session.getLocalRepository() );
}
public PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Settings settings,
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java Fri Sep 2 00:16:16 2005
@@ -16,11 +16,11 @@
* limitations under the License.
*/
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata;
import org.apache.maven.artifact.repository.metadata.Metadata;
import org.apache.maven.artifact.repository.metadata.Plugin;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManagementException;
import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -54,7 +54,6 @@
public org.apache.maven.model.Plugin getByPrefix( String pluginPrefix, List groupIds, List pluginRepositories,
ArtifactRepository localRepository )
- throws RepositoryMetadataManagementException
{
// if not found, try from the remote repository
if ( !pluginDefinitionsByPrefix.containsKey( pluginPrefix ) )
@@ -85,7 +84,7 @@
{
loadPluginMappings( groupId, pluginRepositories, localRepository );
}
- catch ( RepositoryMetadataManagementException e )
+ catch ( ArtifactMetadataRetrievalException e )
{
getLogger().warn( "Cannot resolve plugin-mapping metadata for groupId: " + groupId + " - IGNORING." );
@@ -95,15 +94,15 @@
}
private void loadPluginMappings( String groupId, List pluginRepositories, ArtifactRepository localRepository )
- throws RepositoryMetadataManagementException
+ throws ArtifactMetadataRetrievalException
{
GroupRepositoryMetadata metadata = new GroupRepositoryMetadata( groupId );
- // TOOD: aggregate the results of this instead
+ // TODO: aggregate the results of this instead
repositoryMetadataManager.resolve( metadata, pluginRepositories, localRepository );
File metadataFile = new File( localRepository.getBasedir(),
- localRepository.pathOfRepositoryMetadata( metadata ) );
+ localRepository.pathOfArtifactMetadata( metadata ) );
if ( metadataFile.exists() )
{
@@ -132,7 +131,7 @@
}
private static Metadata readMetadata( File mappingFile )
- throws RepositoryMetadataManagementException
+ throws ArtifactMetadataRetrievalException
{
Metadata result;
@@ -147,15 +146,15 @@
}
catch ( FileNotFoundException e )
{
- throw new RepositoryMetadataManagementException( "Cannot read plugin mappings from: " + mappingFile, e );
+ throw new ArtifactMetadataRetrievalException( "Cannot read plugin mappings from: " + mappingFile, e );
}
catch ( IOException e )
{
- throw new RepositoryMetadataManagementException( "Cannot read plugin mappings from: " + mappingFile, e );
+ throw new ArtifactMetadataRetrievalException( "Cannot read plugin mappings from: " + mappingFile, e );
}
catch ( XmlPullParserException e )
{
- throw new RepositoryMetadataManagementException( "Cannot parse plugin mappings from: " + mappingFile, e );
+ throw new ArtifactMetadataRetrievalException( "Cannot parse plugin mappings from: " + mappingFile, e );
}
finally
{
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginMappingManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginMappingManager.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginMappingManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginMappingManager.java Fri Sep 2 00:16:16 2005
@@ -17,7 +17,6 @@
*/
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManagementException;
import org.apache.maven.model.Plugin;
import java.util.List;
@@ -31,6 +30,5 @@
public interface PluginMappingManager
{
Plugin getByPrefix( String pluginPrefix, List groupIds, List pluginRepositories,
- ArtifactRepository localRepository )
- throws RepositoryMetadataManagementException;
+ ArtifactRepository localRepository );
}
Modified: maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml Fri Sep 2 00:16:16 2005
@@ -244,14 +244,8 @@
org.apache.maven.plugins:maven-jar-plugin:jar,
org.apache.maven.plugins:maven-plugin-plugin:addPluginArtifactMetadata
</package>
- <install>
- org.apache.maven.plugins:maven-install-plugin:install,
- org.apache.maven.plugins:maven-plugin-plugin:installMapping
- </install>
- <deploy>
- org.apache.maven.plugins:maven-deploy-plugin:deploy,
- org.apache.maven.plugins:maven-plugin-plugin:deployMapping
- </deploy>
+ <install>org.apache.maven.plugins:maven-install-plugin:install</install>
+ <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
</phases>
<!-- END SNIPPET: maven-plugin-lifecycle -->
</configuration>
Modified: maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java (original)
+++ maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java Fri Sep 2 00:16:16 2005
@@ -2,39 +2,62 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.LatestArtifactMetadata;
+import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
-/** Inject any plugin-specific artifact metadata to the project's artifact, for subsequent installation
- * and deployment. The first use-case for this is to add the LATEST metadata (which is plugin-specific)
- * for shipping alongside the plugin's artifact.
- *
+/**
+ * Inject any plugin-specific artifact metadata to the project's artifact, for subsequent installation
+ * and deployment. The first use-case for this is to add the LATEST metadata (which is plugin-specific)
+ * for shipping alongside the plugin's artifact.
+ *
* @phase package
* @goal addPluginArtifactMetadata
*/
public class AddPluginArtifactMetadataMojo
extends AbstractMojo
{
-
- /** The project artifact, which should have the LATEST metadata added to it.
- *
+
+ /**
+ * The project artifact, which should have the LATEST metadata added to it.
+ *
* @parameter expression="${project}"
* @required
* @readonly
*/
private MavenProject project;
+ /**
+ * @parameter
+ */
+ private String goalPrefix;
+
public void execute()
throws MojoExecutionException
{
Artifact projectArtifact = project.getArtifact();
-
+
LatestArtifactMetadata metadata = new LatestArtifactMetadata( projectArtifact );
-
+
metadata.setVersion( projectArtifact.getVersion() );
-
+
projectArtifact.addMetadata( metadata );
+
+ GroupRepositoryMetadata groupMetadata = new GroupRepositoryMetadata( project.getGroupId() );
+ groupMetadata.addPluginMapping( getGoalPrefix(), project.getArtifactId() );
+
+ projectArtifact.addMetadata( groupMetadata );
}
+ private String getGoalPrefix()
+ {
+ if ( goalPrefix == null )
+ {
+ goalPrefix = PluginDescriptor.getGoalPrefixFromArtifactId( project.getArtifactId() );
+ }
+
+ return goalPrefix;
+ }
}
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Fri Sep 2 00:16:16 2005
@@ -354,7 +354,7 @@
artifact.getArtifactId() + ": updating metadata due to status of '" + status + "'" );
try
{
- artifact.setFile( null );
+ artifact.setResolved( false );
artifactResolver.resolveAlways( artifact, remoteArtifactRepositories, localRepository );
}
catch ( ArtifactResolutionException e )
@@ -581,7 +581,7 @@
// We don't need all the project methods that are added over those in the model, but we do need basedir
Map context = new HashMap( System.getProperties() );
context.put( "basedir", project.getBasedir() );
-
+
model = modelInterpolator.interpolate( model, context );
// interpolation is before injection, because interpolation is off-limits in the injected variables
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactMetadata.java?rev=266298&r1=266297&r2=266298&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactMetadata.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/ProjectArtifactMetadata.java Fri Sep 2 00:16:16 2005
@@ -33,6 +33,7 @@
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
+import java.util.Date;
/**
* Attach a POM to an artifact.
@@ -53,12 +54,7 @@
public String getFilename()
{
- return getArtifactId() + "-" + getVersion() + ".pom";
- }
-
- public boolean exists()
- {
- return file.exists();
+ return getArtifactId() + "-" + artifact.getVersion() + ".pom";
}
public void storeInLocalRepository( ArtifactRepository localRepository )
@@ -77,7 +73,7 @@
MavenXpp3Reader modelReader = new MavenXpp3Reader();
Model model = modelReader.read( reader );
- model.setVersion( getVersion() );
+ model.setVersion( artifact.getVersion() );
DistributionManagement distributionManagement = model.getDistributionManagement();
if ( distributionManagement == null )
@@ -112,5 +108,30 @@
public String toString()
{
return "project information for " + artifact.getArtifactId() + " " + artifact.getVersion();
+ }
+
+ public boolean storedInArtifactVersionDirectory()
+ {
+ return true;
+ }
+
+ public String getBaseVersion()
+ {
+ return artifact.getBaseVersion();
+ }
+
+ public boolean newerThanFile( File file )
+ {
+ return this.file.lastModified() > file.lastModified();
+ }
+
+ public Date getLastModified()
+ {
+ return new Date( file.lastModified() );
+ }
+
+ public boolean isSnapshot()
+ {
+ return artifact.isSnapshot();
}
}
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=266298&r1=266297&r2=266298&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 Fri Sep 2 00:16:16 2005
@@ -20,6 +20,26 @@
<description>The groupId that is directory represents, if any.</description>
</field>
<field>
+ <name>artifactId</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <description>The artifactId that is directory represents, if any.</description>
+ </field>
+ <field>
+ <name>version</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <description>The version that is directory represents, if any.</description>
+ </field>
+ <field>
+ <name>versioning</name>
+ <version>1.0.0</version>
+ <association>
+ <type>Versioning</type>
+ </association>
+ <description>Versioning information for the artifact.</description>
+ </field>
+ <field>
<name>plugins</name>
<version>1.0.0</version>
<description>The set of plugin mappings for the group</description>
@@ -31,6 +51,61 @@
</fields>
</class>
<class>
+ <name>Versioning</name>
+ <version>1.0.0</version>
+ <description>Versioning information for an artifact</description>
+ <fields>
+ <field>
+ <name>latest</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <description>What the latest version in the directory is, including snapshots</description>
+ </field>
+ <field>
+ <name>release</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <description>What the latest version in the directory is, of the releases</description>
+ </field>
+ <field>
+ <name>snapshot</name>
+ <version>1.0.0</version>
+ <association>
+ <type>Snapshot</type>
+ </association>
+ <description>The current snapshot data in use for this version</description>
+ </field>
+ <field>
+ <name>versions</name>
+ <version>1.0.0</version>
+ <description>Versions available for the artifact</description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>Snapshot</name>
+ <version>1.0.0</version>
+ <description>Snapshot data for the current version</description>
+ <fields>
+ <field>
+ <name>timestamp</name>
+ <version>1.0.0</version>
+ <description>The time it was deployed</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>buildNumber</name>
+ <version>1.0.0</version>
+ <description>The incremental build number</description>
+ <type>int</type>
+ </field>
+ </fields>
+ </class>
+ <class>
<name>Plugin</name>
<version>1.0.0</version>
<description>Mapping information for a single plugin within this group</description>
@@ -53,4 +128,4 @@
</fields>
</class>
</classes>
-</model>
\ No newline at end of file
+</model>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org