You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jd...@apache.org on 2005/07/19 06:15:58 UTC
svn commit: r219615 - in /maven/components/trunk:
maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/
maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/
maven-core-it-verifier/src/main/java/org/apa...
Author: jdcasey
Date: Mon Jul 18 21:15:26 2005
New Revision: 219615
URL: http://svn.apache.org/viewcvs?rev=219615&view=rev
Log:
Centralized repository handling in AbstractVersionTransformation, for consistency (should fix MNG-527).
Changed download strategy for plugins.xml metadata to download only when non-existent locally or when plugin prefix cannot be located within local metadata. NOTE: This could lead to local-only installs of plugins having their prefix mappings overwritten.
Next step is to change the maven-plugin-plugin.
Modified:
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.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/LatestArtifactTransformation.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.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/PluginManager.java
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/DefaultPluginMappingBuilder.java
maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/MavenPluginMappingBuilder.java
maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/PluginMappingManager.java
maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/metadata/PluginMappingMetadata.java
maven/components/trunk/maven-plugin-registry/src/main/java/org/apache/maven/plugin/registry/DefaultPluginRegistryBuilder.java
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=219615&r1=219614&r2=219615&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 Mon Jul 18 21:15:26 2005
@@ -23,6 +23,12 @@
// only resolve repository metadata once per session...
private Map cachedMetadata = new HashMap();
+ public void resolveLocally( RepositoryMetadata metadata, ArtifactRepository local )
+ throws RepositoryMetadataManagementException
+ {
+ resolve( metadata, null, local );
+ }
+
public void resolve( RepositoryMetadata metadata, ArtifactRepository remote, ArtifactRepository local )
throws RepositoryMetadataManagementException
{
@@ -30,29 +36,25 @@
if ( metadataFile == null )
{
- metadataFile = constructLocalRepositoryFile( metadata, local, remote.getId() );
+ metadataFile = constructLocalRepositoryFile( metadata, local );
- if ( remote == null )
- {
- throw new RepositoryMetadataManagementException( metadata,
- "Cannot retrieve repository metadata from null repository." );
- }
- else
+ if ( !metadataFile.exists() && remote != null )
{
try
{
File tempMetadataFile = File.createTempFile( "plugins.xml", null );
-
+
try
{
wagonManager.getRepositoryMetadata( metadata, remote, tempMetadataFile );
-
- if( !metadataFile.exists() || ( metadataFile.lastModified() <= tempMetadataFile.lastModified() ) )
+
+ if ( !metadataFile.exists()
+ || ( metadataFile.lastModified() <= tempMetadataFile.lastModified() ) )
{
if ( !tempMetadataFile.renameTo( metadataFile ) )
{
FileUtils.copyFile( tempMetadataFile, metadataFile );
-
+
tempMetadataFile.delete();
}
}
@@ -61,20 +63,18 @@
{
if ( !metadataFile.exists() )
{
- throw new RepositoryMetadataManagementException( metadata, "Remote repository metadata not found.",
- e );
+ 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 );
}
}
-
- metadata.setFile( metadataFile );
}
catch ( TransferFailedException e )
{
@@ -83,9 +83,18 @@
}
catch ( IOException e )
{
- throw new RepositoryMetadataManagementException( metadata, "Error constructing temporary metadata download file.", e );
+ throw new RepositoryMetadataManagementException(
+ metadata,
+ "Error constructing temporary metadata download file.",
+ e );
}
}
+ else
+ {
+ getLogger().info( "Using local copy of " + metadata + " from: " + metadataFile );
+ }
+
+ metadata.setFile( metadataFile );
}
}
@@ -110,18 +119,7 @@
public void install( RepositoryMetadata metadata, ArtifactRepository local, String remoteRepositoryId )
throws RepositoryMetadataManagementException
{
- String realignedPath = local.formatAsFile( metadata.getRepositoryPath() );
-
- realignedPath = realignedPath.replace( File.separatorChar, '/' );
-
- if ( !realignedPath.startsWith( "/" ) )
- {
- realignedPath = "/" + realignedPath;
- }
-
- realignedPath = "/REPOSITORY-INF/" + remoteRepositoryId + realignedPath;
-
- File metadataFile = new File( local.getBasedir(), realignedPath ).getAbsoluteFile();
+ File metadataFile = constructLocalRepositoryFile( metadata, local );
try
{
@@ -141,20 +139,27 @@
}
- private File constructLocalRepositoryFile( RepositoryMetadata metadata, ArtifactRepository local, String remoteId )
+ public void purgeLocalCopy( RepositoryMetadata metadata, ArtifactRepository local )
+ throws RepositoryMetadataManagementException
{
- String metadataPath = local.formatAsFile( metadata.getRepositoryPath() );
-
- String realignedPath = metadataPath.replace( File.separatorChar, '/' );
-
- if ( !realignedPath.startsWith( "/" ) )
+ File metadataFile = constructLocalRepositoryFile( metadata, local );
+
+ if ( metadataFile.exists() )
{
- realignedPath = "/" + realignedPath;
+ if ( !metadataFile.delete() )
+ {
+ throw new RepositoryMetadataManagementException( metadata, "Failed to purge local copy from: " + metadataFile );
+ }
}
+ }
+
+ private File constructLocalRepositoryFile( RepositoryMetadata metadata, ArtifactRepository local )
+ {
+ String metadataPath = local.formatAsFile( metadata.getRepositoryPath() );
- realignedPath = "/REPOSITORY-INF/" + remoteId + realignedPath;
+ metadataPath = metadataPath.replace( File.separatorChar, '/' );
- return new File( local.getBasedir(), realignedPath );
+ return new File( local.getBasedir(), metadataPath );
}
}
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java?rev=219615&r1=219614&r2=219615&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java Mon Jul 18 21:15:26 2005
@@ -5,6 +5,9 @@
public interface RepositoryMetadataManager
{
+ void resolveLocally( RepositoryMetadata repositoryMetadata, ArtifactRepository local )
+ throws RepositoryMetadataManagementException;
+
void resolve( RepositoryMetadata repositoryMetadata, ArtifactRepository remote, ArtifactRepository local )
throws RepositoryMetadataManagementException;
@@ -12,6 +15,9 @@
throws RepositoryMetadataManagementException;
void install( RepositoryMetadata repositoryMetadata, ArtifactRepository local, String remoteRepositoryId )
+ throws RepositoryMetadataManagementException;
+
+ void purgeLocalCopy( RepositoryMetadata repositoryMetadata, ArtifactRepository local )
throws RepositoryMetadataManagementException;
}
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=219615&r1=219614&r2=219615&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 Mon Jul 18 21:15:26 2005
@@ -18,9 +18,11 @@
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.ArtifactMetadataRetrievalException;
import org.apache.maven.artifact.metadata.VersionArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import java.io.IOException;
@@ -101,8 +103,19 @@
getLogger().info(
artifact.getArtifactId() + ": checking for updates from " + remoteRepository.getId() );
- VersionArtifactMetadata remoteMetadata = retrieveFromRemoteRepository( artifact, remoteRepository, localMetadata );
-
+ VersionArtifactMetadata remoteMetadata;
+
+ try
+ {
+ remoteMetadata = retrieveFromRemoteRepository( artifact, remoteRepository, localMetadata );
+ }
+ catch ( ResourceDoesNotExistException e )
+ {
+ getLogger().debug( "Error resolving artifact version from metadata.", e );
+
+ continue;
+ }
+
int difference = remoteMetadata.compareTo( localMetadata );
if ( difference > 0 )
{
@@ -124,13 +137,13 @@
}
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.equals( artifact.getBaseVersion() ) )
+ if ( version != null && !version.equals( artifact.getBaseVersion() ) )
{
String message = artifact.getArtifactId() + ": resolved to version " + version;
if ( artifact.getRepository() != null )
@@ -158,14 +171,27 @@
}
}
- protected abstract VersionArtifactMetadata retrieveFromRemoteRepository( Artifact artifact,
- ArtifactRepository remoteRepository,
- VersionArtifactMetadata localMetadata )
- throws ArtifactMetadataRetrievalException;
-
- protected abstract VersionArtifactMetadata readFromLocalRepository( Artifact artifact,
- ArtifactRepository localRepository )
- throws IOException;
+ protected VersionArtifactMetadata retrieveFromRemoteRepository( Artifact artifact,
+ ArtifactRepository remoteRepository,
+ VersionArtifactMetadata localMetadata )
+ throws ArtifactMetadataRetrievalException, ResourceDoesNotExistException
+ {
+ AbstractVersionArtifactMetadata metadata = createMetadata( artifact );
+
+ metadata.retrieveFromRemoteRepository( remoteRepository, wagonManager );
+
+ return metadata;
+ }
+
+ protected abstract AbstractVersionArtifactMetadata createMetadata( Artifact artifact );
+
+ private VersionArtifactMetadata readFromLocalRepository( Artifact artifact, ArtifactRepository localRepository )
+ throws IOException
+ {
+ AbstractVersionArtifactMetadata metadata = createMetadata( artifact );
+ metadata.readFromLocalRepository( localRepository );
+ return metadata;
+ }
private Date getMidnightBoundary()
{
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java?rev=219615&r1=219614&r2=219615&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java Mon Jul 18 21:15:26 2005
@@ -4,11 +4,8 @@
import org.apache.maven.artifact.metadata.AbstractVersionArtifactMetadata;
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
import org.apache.maven.artifact.metadata.LatestArtifactMetadata;
-import org.apache.maven.artifact.metadata.VersionArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.wagon.ResourceDoesNotExistException;
-import java.io.IOException;
import java.util.List;
public class LatestArtifactTransformation
@@ -22,7 +19,7 @@
if ( LATEST_VERSION.equals( artifact.getVersion() ) )
{
String version = resolveVersion( artifact, localRepository, remoteRepositories );
- if ( !version.equals( artifact.getVersion() ) )
+ if ( version != null && !version.equals( artifact.getVersion() ) )
{
artifact.setBaseVersion( version );
artifact.updateVersion( version, localRepository );
@@ -42,32 +39,9 @@
// metadata is added at deploy time
}
- protected VersionArtifactMetadata retrieveFromRemoteRepository( Artifact artifact,
- ArtifactRepository remoteRepository,
- VersionArtifactMetadata localMetadata )
- throws ArtifactMetadataRetrievalException
+ protected AbstractVersionArtifactMetadata createMetadata( Artifact artifact )
{
- AbstractVersionArtifactMetadata metadata = new LatestArtifactMetadata( artifact );
- try
- {
- metadata.retrieveFromRemoteRepository( remoteRepository, wagonManager );
- }
- catch ( ResourceDoesNotExistException e )
- {
- if ( localMetadata.constructVersion() == null )
- {
- throw new ArtifactMetadataRetrievalException( "Unable to find latest version for plugin artifact " + artifact, e );
- }
- // otherwise, ignore - use the local one
- }
- return metadata;
+ return new LatestArtifactMetadata( artifact );
}
- protected VersionArtifactMetadata readFromLocalRepository( Artifact artifact, ArtifactRepository localRepository )
- throws IOException
- {
- AbstractVersionArtifactMetadata metadata = new LatestArtifactMetadata( artifact );
- metadata.readFromLocalRepository( localRepository );
- return metadata;
- }
}
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java?rev=219615&r1=219614&r2=219615&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java Mon Jul 18 21:15:26 2005
@@ -20,11 +20,8 @@
import org.apache.maven.artifact.metadata.AbstractVersionArtifactMetadata;
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
import org.apache.maven.artifact.metadata.ReleaseArtifactMetadata;
-import org.apache.maven.artifact.metadata.VersionArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.wagon.ResourceDoesNotExistException;
-import java.io.IOException;
import java.util.List;
/**
@@ -44,7 +41,8 @@
if ( RELEASE_VERSION.equals( artifact.getVersion() ) )
{
String version = resolveVersion( artifact, localRepository, remoteRepositories );
- if ( !version.equals( artifact.getVersion() ) )
+
+ if ( version != null && !version.equals( artifact.getVersion() ) )
{
artifact.setBaseVersion( version );
artifact.updateVersion( version, localRepository );
@@ -64,32 +62,9 @@
// metadata is added at deploy time
}
- protected VersionArtifactMetadata retrieveFromRemoteRepository( Artifact artifact,
- ArtifactRepository remoteRepository,
- VersionArtifactMetadata localMetadata )
- throws ArtifactMetadataRetrievalException
+ protected AbstractVersionArtifactMetadata createMetadata( Artifact artifact )
{
- AbstractVersionArtifactMetadata metadata = new ReleaseArtifactMetadata( artifact );
- try
- {
- metadata.retrieveFromRemoteRepository( remoteRepository, wagonManager );
- }
- catch ( ResourceDoesNotExistException e )
- {
- if ( localMetadata.constructVersion() == null )
- {
- throw new ArtifactMetadataRetrievalException( "Unable to find release for artifact " + artifact, e );
- }
- // otherwise, ignore - use the local one
- }
- return metadata;
+ return new ReleaseArtifactMetadata( artifact );
}
- protected VersionArtifactMetadata readFromLocalRepository( Artifact artifact, ArtifactRepository localRepository )
- throws IOException
- {
- AbstractVersionArtifactMetadata metadata = new ReleaseArtifactMetadata( artifact );
- metadata.readFromLocalRepository( localRepository );
- return metadata;
- }
}
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=219615&r1=219614&r2=219615&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 Mon Jul 18 21:15:26 2005
@@ -17,13 +17,12 @@
*/
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.metadata.AbstractVersionArtifactMetadata;
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
import org.apache.maven.artifact.metadata.SnapshotArtifactMetadata;
-import org.apache.maven.artifact.metadata.VersionArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.wagon.ResourceDoesNotExistException;
-import java.io.IOException;
import java.util.List;
import java.util.regex.Matcher;
@@ -81,7 +80,16 @@
else if ( isSnapshot( artifact ) )
{
SnapshotArtifactMetadata metadata = null;
- metadata = (SnapshotArtifactMetadata) retrieveFromRemoteRepository( artifact, remoteRepository, null );
+
+ try
+ {
+ metadata = (SnapshotArtifactMetadata) retrieveFromRemoteRepository( artifact, remoteRepository, null );
+ }
+ catch ( ResourceDoesNotExistException e )
+ {
+ // ignore. We'll be creating this metadata if it doesn't exist...
+ }
+
metadata.update();
artifact.setVersion( metadata.constructVersion() );
@@ -95,29 +103,9 @@
return artifact.getVersion().endsWith( SNAPSHOT_VERSION );
}
- protected VersionArtifactMetadata retrieveFromRemoteRepository( Artifact artifact,
- ArtifactRepository remoteRepository,
- VersionArtifactMetadata localMetadata )
- throws ArtifactMetadataRetrievalException
+ protected AbstractVersionArtifactMetadata createMetadata( Artifact artifact )
{
- SnapshotArtifactMetadata metadata = new SnapshotArtifactMetadata( artifact );
- try
- {
- metadata.retrieveFromRemoteRepository( remoteRepository, wagonManager );
- }
- catch ( ResourceDoesNotExistException e )
- {
- // No problem...
- // this just means that there is no snapshot version file, so we keep timestamp = null, build = 0
- }
- return metadata;
+ return new SnapshotArtifactMetadata( artifact );
}
- protected VersionArtifactMetadata readFromLocalRepository( Artifact artifact, ArtifactRepository localRepository )
- throws IOException
- {
- SnapshotArtifactMetadata metadata = new SnapshotArtifactMetadata( artifact );
- metadata.readFromLocalRepository( localRepository );
- return metadata;
- }
}
Modified: maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java?rev=219615&r1=219614&r2=219615&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java (original)
+++ maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java Mon Jul 18 21:15:26 2005
@@ -493,8 +493,8 @@
cli.setExecutable( executable );
-// cli.createArgument().setValue( "-e" );
- cli.createArgument().setValue( "-X" );
+ cli.createArgument().setValue( "-e" );
+// cli.createArgument().setValue( "-X" );
cli.createArgument().setValue( "--no-plugin-registry" );
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=219615&r1=219614&r2=219615&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Mon Jul 18 21:15:26 2005
@@ -570,7 +570,26 @@
// Steps for retrieving the plugin model instance:
// 1. request directly from the plugin collector by prefix
- pluginDescriptor = pluginManager.getPluginDescriptorForPrefix( prefix );
+ try
+ {
+ pluginDescriptor = pluginManager.getPluginDescriptorForPrefix( prefix );
+ }
+ catch ( PluginManagerException e )
+ {
+ throw new LifecycleExecutionException( "Cannot resolve plugin-prefix: \'" + prefix + "\' from plugin collector.", e );
+ }
+
+ if ( pluginDescriptor == null )
+ {
+ try
+ {
+ plugin = pluginManager.getPluginDefinitionForPrefix( prefix, session, project );
+ }
+ catch ( PluginManagerException e )
+ {
+ throw new LifecycleExecutionException( "Cannot resolve plugin-prefix: \'" + prefix + "\' from plugin mappings metadata.", e );
+ }
+ }
if ( pluginDescriptor != null )
{
@@ -581,15 +600,7 @@
plugin.setVersion( pluginDescriptor.getVersion() );
}
- // 2. use the plugin resolver to resolve the prefix in the search groups
- if ( plugin == null )
- {
- PluginMappingManager mappingManager = getPluginMappingManager( session, project );
-
- plugin = mappingManager.getByPrefix( prefix );
- }
-
- // 3. default to o.a.m.plugins and maven-<prefix>-plugin
+ // 2. default to o.a.m.plugins and maven-<prefix>-plugin
if ( plugin == null )
{
plugin = new Plugin();
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=219615&r1=219614&r2=219615&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 Mon Jul 18 21:15:26 2005
@@ -21,6 +21,7 @@
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
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;
@@ -40,6 +41,9 @@
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder;
import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugin.mapping.MavenPluginMappingBuilder;
+import org.apache.maven.plugin.mapping.PluginMappingManagementException;
+import org.apache.maven.plugin.mapping.PluginMappingManager;
import org.apache.maven.plugin.version.PluginVersionManager;
import org.apache.maven.plugin.version.PluginVersionResolutionException;
import org.apache.maven.project.MavenProject;
@@ -67,6 +71,7 @@
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@@ -74,7 +79,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.lang.reflect.Field;
public class DefaultPluginManager
extends AbstractLogEnabled
@@ -100,6 +104,8 @@
protected ArtifactResolver artifactResolver;
protected MavenProjectBuilder mavenProjectBuilder;
+
+ protected MavenPluginMappingBuilder pluginMappingBuilder;
// END component requirements
public DefaultPluginManager()
@@ -112,9 +118,41 @@
// ----------------------------------------------------------------------
public PluginDescriptor getPluginDescriptorForPrefix( String prefix )
+ throws PluginManagerException
{
return pluginCollector.getPluginDescriptorForPrefix( prefix );
}
+
+ public Plugin getPluginDefinitionForPrefix( String prefix, MavenSession session, MavenProject project ) throws PluginManagerException
+ {
+ PluginMappingManager mappingManager = getPluginMappingManager( session, project );
+
+ Plugin plugin = mappingManager.getByPrefix( prefix );
+
+ if ( plugin == null && !mappingManager.isRefreshed() )
+ {
+ getLogger().info( "Refreshing plugin mapping metadata; looking for plugin with prefix: \'" + prefix + "\'." );
+
+ try
+ {
+ mappingManager = pluginMappingBuilder.refreshPluginMappingManager( session
+ .getPluginMappingManager(), project.getPluginArtifactRepositories(), session
+ .getLocalRepository() );
+ }
+ catch ( RepositoryMetadataManagementException e )
+ {
+ throw new PluginManagerException( "Error refreshing plugin mappings.", e );
+ }
+ catch ( PluginMappingManagementException e )
+ {
+ throw new PluginManagerException( "Error refreshing plugin mappings.", e );
+ }
+
+ plugin = mappingManager.getByPrefix( prefix );
+ }
+
+ return plugin;
+ }
public PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Settings settings,
ArtifactRepository localRepository )
@@ -929,4 +967,36 @@
return pluginContainer.lookup( role, roleHint );
}
+ private PluginMappingManager getPluginMappingManager( MavenSession session, MavenProject project )
+ throws PluginManagerException
+{
+ PluginMappingManager mappingManager = session.getPluginMappingManager();
+
+ // don't reassemble the plugin mappings if the session has already been configured with them.
+ if ( mappingManager == null )
+ {
+ try
+ {
+ List pluginGroupIds = session.getSettings().getPluginGroups();
+ List pluginRepositories = project.getPluginArtifactRepositories();
+ ArtifactRepository localRepository = session.getLocalRepository();
+
+ mappingManager = pluginMappingBuilder.loadPluginMappings( pluginGroupIds, pluginRepositories,
+ localRepository );
+
+ // lazily configure this on the session.
+ session.setPluginMappingManager( mappingManager );
+ }
+ catch ( RepositoryMetadataManagementException e )
+ {
+ throw new PluginManagerException( "Cannot load plugin mappings.", e );
+ }
+ catch ( PluginMappingManagementException e )
+ {
+ throw new PluginManagerException( "Cannot load plugin mappings.", e );
+ }
+ }
+
+ return mappingManager;
+}
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?rev=219615&r1=219614&r2=219615&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java Mon Jul 18 21:15:26 2005
@@ -41,8 +41,12 @@
void executeMojo( MavenProject project, MojoExecution execution, MavenSession session )
throws MojoExecutionException, PluginManagerException, ArtifactResolutionException;
- PluginDescriptor getPluginDescriptorForPrefix( String prefix );
+ PluginDescriptor getPluginDescriptorForPrefix( String prefix )
+ throws PluginManagerException;
+ Plugin getPluginDefinitionForPrefix( String prefix, MavenSession session, MavenProject project )
+ throws PluginManagerException;
+
PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Settings settings,
ArtifactRepository localRepository )
throws ArtifactResolutionException, PluginManagerException, PluginVersionResolutionException;
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=219615&r1=219614&r2=219615&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 Mon Jul 18 21:15:26 2005
@@ -22,6 +22,9 @@
<requirement>
<role>org.apache.maven.project.MavenProjectBuilder</role>
</requirement>
+ <requirement>
+ <role>org.apache.maven.plugin.mapping.MavenPluginMappingBuilder</role>
+ </requirement>
</requirements>
</component>
Modified: maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/DefaultPluginMappingBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/DefaultPluginMappingBuilder.java?rev=219615&r1=219614&r2=219615&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/DefaultPluginMappingBuilder.java (original)
+++ maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/DefaultPluginMappingBuilder.java Mon Jul 18 21:15:26 2005
@@ -29,14 +29,50 @@
ArtifactRepository localRepository )
throws RepositoryMetadataManagementException, PluginMappingManagementException
{
- List pluginGroupIds = new ArrayList( groupIds );
+ return loadPluginMappings( groupIds, pluginRepositories, localRepository, new PluginMappingManager() );
+ }
+
+ public PluginMappingManager refreshPluginMappingManager( PluginMappingManager mappingManager, List pluginRepositories,
+ ArtifactRepository localRepository )
+ throws RepositoryMetadataManagementException, PluginMappingManagementException
+ {
+ // prevent performance drag from abuse of this method.
+ if ( mappingManager.isRefreshed() )
+ {
+ throw new PluginMappingManagementException( "Plugin-mappings have already been refreshed. Cannot re-refresh." );
+ }
+
+ getLogger().info( "Refreshing plugin-mapping metadata..." );
+
+ List groupIds = new ArrayList();
+
+ for ( Iterator it = mappingManager.getPluginMaps().iterator(); it.hasNext(); )
+ {
+ PluginMap map = (PluginMap) it.next();
+
+ String groupId = map.getGroupId();
+
+ groupIds.add( groupId );
+
+ repositoryMetadataManager.purgeLocalCopy( new PluginMappingMetadata( groupId ), localRepository );
+ }
+ mappingManager.markRefreshed();
+
+ return loadPluginMappings(groupIds, pluginRepositories, localRepository, mappingManager);
+ }
+
+ private PluginMappingManager loadPluginMappings( List groupIds, List pluginRepositories,
+ ArtifactRepository localRepository,
+ PluginMappingManager mappingManager )
+ throws RepositoryMetadataManagementException, PluginMappingManagementException
+ {
+ List pluginGroupIds = new ArrayList( groupIds );
+
if ( !pluginGroupIds.contains( "org.apache.maven.plugins" ) )
{
pluginGroupIds.add( "org.apache.maven.plugins" );
}
-
- PluginMappingManager mappingManager = new PluginMappingManager();
if ( pluginGroupIds != null )
{
@@ -57,8 +93,9 @@
}
catch ( RepositoryMetadataManagementException e )
{
- getLogger().warn( "Cannot resolve plugin-mapping metadata for groupId: " + groupId + " - IGNORING." );
-
+ getLogger()
+ .warn( "Cannot resolve plugin-mapping metadata for groupId: " + groupId + " - IGNORING." );
+
getLogger().debug( "Error resolving plugin-mapping metadata for groupId: " + groupId + ".", e );
}
}
@@ -67,9 +104,10 @@
return mappingManager;
}
- private PluginMap readPluginMap( File mappingFile ) throws PluginMappingManagementException
+ private PluginMap readPluginMap( File mappingFile )
+ throws PluginMappingManagementException
{
- if( mappingFile.exists() )
+ if ( mappingFile.exists() )
{
Reader fileReader = null;
try
@@ -77,8 +115,8 @@
fileReader = new FileReader( mappingFile );
PluginMappingXpp3Reader mappingReader = new PluginMappingXpp3Reader();
-
- return mappingReader.read(fileReader);
+
+ return mappingReader.read( fileReader );
}
catch ( IOException e )
{
@@ -113,7 +151,7 @@
try
{
repositoryMetadataManager.resolve( metadata, repository, localRepository );
-
+
// reset this to keep it from getting in the way when we succeed but not on first repo...
repositoryException = null;
Modified: maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/MavenPluginMappingBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/MavenPluginMappingBuilder.java?rev=219615&r1=219614&r2=219615&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/MavenPluginMappingBuilder.java (original)
+++ maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/MavenPluginMappingBuilder.java Mon Jul 18 21:15:26 2005
@@ -12,4 +12,8 @@
ArtifactRepository localRepository )
throws RepositoryMetadataManagementException, PluginMappingManagementException;
+ PluginMappingManager refreshPluginMappingManager( PluginMappingManager mappingManager, List pluginRepositories,
+ ArtifactRepository localRepository )
+ throws RepositoryMetadataManagementException, PluginMappingManagementException;
+
}
Modified: maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/PluginMappingManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/PluginMappingManager.java?rev=219615&r1=219614&r2=219615&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/PluginMappingManager.java (original)
+++ maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/PluginMappingManager.java Mon Jul 18 21:15:26 2005
@@ -12,6 +12,7 @@
{
private List mappings = new ArrayList();
+ private boolean refreshed = false;
private Map pluginDefinitionsByPrefix = new HashMap();
private Map pluginDefinitionsByPackaging = new HashMap();
@@ -20,9 +21,34 @@
{
mappings.add( pluginMap );
- // flush the cache.
- pluginDefinitionsByPrefix = null;
- pluginDefinitionsByPackaging = null;
+ clearCache();
+ }
+
+ public void markRefreshed()
+ {
+ this.refreshed = true;
+ }
+
+ public boolean isRefreshed()
+ {
+ return refreshed;
+ }
+
+ public List getPluginMaps()
+ {
+ return mappings;
+ }
+
+ public void clear()
+ {
+ this.mappings = null;
+ clearCache();
+ }
+
+ private void clearCache()
+ {
+ this.pluginDefinitionsByPackaging = null;
+ this.pluginDefinitionsByPrefix = null;
}
public Plugin getByPrefix( String pluginPrefix )
Modified: maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/metadata/PluginMappingMetadata.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/metadata/PluginMappingMetadata.java?rev=219615&r1=219614&r2=219615&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/metadata/PluginMappingMetadata.java (original)
+++ maven/components/trunk/maven-plugin-mapping/src/main/java/org/apache/maven/plugin/mapping/metadata/PluginMappingMetadata.java Mon Jul 18 21:15:26 2005
@@ -17,7 +17,7 @@
{
this.groupId = groupId;
}
-
+
public String getRepositoryPath()
{
return groupId + "/" + PLUGIN_MAPPING_FILE;
Modified: maven/components/trunk/maven-plugin-registry/src/main/java/org/apache/maven/plugin/registry/DefaultPluginRegistryBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-registry/src/main/java/org/apache/maven/plugin/registry/DefaultPluginRegistryBuilder.java?rev=219615&r1=219614&r2=219615&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-registry/src/main/java/org/apache/maven/plugin/registry/DefaultPluginRegistryBuilder.java (original)
+++ maven/components/trunk/maven-plugin-registry/src/main/java/org/apache/maven/plugin/registry/DefaultPluginRegistryBuilder.java Mon Jul 18 21:15:26 2005
@@ -58,8 +58,8 @@
globalRegistryFile = getFile( globalRegistryPath, "maven.home", MavenPluginRegistryBuilder.ALT_GLOBAL_PLUGIN_REG_LOCATION );
- getLogger().debug( "Building Maven global-level settings from: '" + globalRegistryFile.getAbsolutePath() + "'" );
- getLogger().debug( "Building Maven user-level settings from: '" + userRegistryFile.getAbsolutePath() + "'" );
+ getLogger().debug( "Building Maven global-level plugin registry from: '" + globalRegistryFile.getAbsolutePath() + "'" );
+ getLogger().debug( "Building Maven user-level plugin registry from: '" + userRegistryFile.getAbsolutePath() + "'" );
}
public PluginRegistry buildPluginRegistry()
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org