Author: jdcasey Date: Mon Jul 11 21:13:40 2005 New Revision: 215919 URL: http://svn.apache.org/viewcvs?rev=215919&view=rev Log: Resolving:
MNG-511 MNG-513 Working on: MNG-449 o Added code to stop the version manager from prompting the user for unregistered plugins; it will simply register them with the resolved version. o Added failover fourth plugin-version resolution option, which is a plugin-specific artifact metadata called LATEST.version.txt, and will be published with each install/deployment o Added MavenProject.get/setArtifact(..) to handle a single artifact instance for a project (allows injection of artifact metadata without having to handle it all within the install/deploy mojos). o Changed plugin-version resolution to only use MavenMetadataSource rather than resolving the whole plugin artifact. o Changed the install and deploy mojos to only use ${project.artifact} rather than constructing their own, so they can take advantage of metadata added elsewhere in the build. o Factored the "RELEASE".equals(..) check in the DefaultRepositoryLayout to use new metadata method storedInArtifactDirectory() instead, since RELEASE and LATEST both share this characteristic. NOTE: I'm not going to resolve MNG-449 yet, because I'm not sure what else Brett had in mind related to the plugin-development-without-release use case... Added: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java (with props) maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java (with props) maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java (with props) Modified: 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/metadata/ReleaseArtifactMetadata.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/resources/META-INF/plexus/components.xml 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/repository/layout/DefaultRepositoryLayout.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml maven/components/trunk/maven-plugins/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/deploy/DeployMojo.java maven/components/trunk/maven-plugins/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java maven/components/trunk/maven-plugins/maven-plugin-plugin/pom.xml 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/MavenProject.java 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=215919&r1=215918&r2=215919&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 Mon Jul 11 21:13:40 2005 @@ -75,6 +75,7 @@ for ( Iterator i = artifact.getMetadataList().iterator(); i.hasNext(); ) { ArtifactMetadata metadata = (ArtifactMetadata) i.next(); + metadata.storeInLocalRepository( localRepository ); } } Added: 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=215919&view=auto ============================================================================== --- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java (added) +++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java Mon Jul 11 21:13:40 2005 @@ -0,0 +1,85 @@ +package org.apache.maven.artifact.metadata; + +import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.transform.LatestArtifactTransformation; + +import java.io.File; + +public class LatestArtifactMetadata + extends AbstractVersionArtifactMetadata +{ + + private String version; + + public LatestArtifactMetadata( Artifact artifact ) + { + super( artifact, artifact.getArtifactId() + "-" + LatestArtifactTransformation.LATEST_VERSION + "." + SNAPSHOT_VERSION_FILE ); + } + + public String constructVersion() + { + return version; + } + + public int compareTo( Object o ) + { + LatestArtifactMetadata metadata = (LatestArtifactMetadata) o; + + // TODO: we need some more complicated version comparison + if ( version == null ) + { + if ( metadata.version == null ) + { + return 0; + } + else + { + return -1; + } + } + else + { + if ( metadata.version == null ) + { + return 1; + } + else + { + return version.compareTo( metadata.version ); + } + } + } + + public boolean newerThanFile( File file ) + { + long fileTime = file.lastModified(); + + return ( lastModified > fileTime ); + } + + public String toString() + { + return "latest-version information for " + artifact.getArtifactId(); + } + + protected void setContent( String content ) + { + this.version = content.trim(); + } + + public void setVersion( String version ) + { + this.version = version; + } + + public String getBaseVersion() + { + return LatestArtifactTransformation.LATEST_VERSION; + } + + public boolean storedInArtifactDirectory() + { + return false; + } + +} Propchange: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/metadata/LatestArtifactMetadata.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" 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=215919&r1=215918&r2=215919&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 Mon Jul 11 21:13:40 2005 @@ -98,4 +98,10 @@ { return ReleaseArtifactTransformation.RELEASE_VERSION; } + + public boolean storedInArtifactDirectory() + { + return false; + } + } Added: 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=215919&view=auto ============================================================================== --- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java (added) +++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java Mon Jul 11 21:13:40 2005 @@ -0,0 +1,73 @@ +package org.apache.maven.artifact.transform; + +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.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 + extends AbstractVersionTransformation +{ + public static final String LATEST_VERSION = "LATEST"; + + public void transformForResolve( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository ) + throws ArtifactMetadataRetrievalException + { + if ( LATEST_VERSION.equals( artifact.getVersion() ) ) + { + String version = resolveVersion( artifact, localRepository, remoteRepositories ); + if ( !version.equals( artifact.getVersion() ) ) + { + artifact.setBaseVersion( version ); + artifact.updateVersion( version, localRepository ); + } + } + } + + public void transformForInstall( Artifact artifact, ArtifactRepository localRepository ) + throws ArtifactMetadataRetrievalException + { + // metadata is added at install time + } + + public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository ) + throws ArtifactMetadataRetrievalException + { + // metadata is added at deploy time + } + + protected VersionArtifactMetadata retrieveFromRemoteRepository( Artifact artifact, + ArtifactRepository remoteRepository, + VersionArtifactMetadata localMetadata ) + throws ArtifactMetadataRetrievalException + { + 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; + } + + protected VersionArtifactMetadata readFromLocalRepository( Artifact artifact, ArtifactRepository localRepository ) + throws IOException + { + AbstractVersionArtifactMetadata metadata = new LatestArtifactMetadata( artifact ); + metadata.readFromLocalRepository( localRepository ); + return metadata; + } +} Propchange: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" 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=215919&r1=215918&r2=215919&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 11 21:13:40 2005 @@ -38,15 +38,10 @@ { public static final String RELEASE_VERSION = "RELEASE"; - private static boolean isRelease( Artifact artifact ) - { - return artifact.getVersion().equals( RELEASE_VERSION ); - } - public void transformForResolve( Artifact artifact, List remoteRepositories, ArtifactRepository localRepository ) throws ArtifactMetadataRetrievalException { - if ( isRelease( artifact ) ) + if ( RELEASE_VERSION.equals( artifact.getVersion() ) ) { String version = resolveVersion( artifact, localRepository, remoteRepositories ); if ( !version.equals( artifact.getVersion() ) ) Modified: maven/components/trunk/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml?rev=215919&r1=215918&r2=215919&view=diff ============================================================================== --- maven/components/trunk/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml (original) +++ maven/components/trunk/maven-artifact-manager/src/main/resources/META-INF/plexus/components.xml Mon Jul 11 21:13:40 2005 @@ -36,6 +36,17 @@ </requirement> </requirements> </component> + + <component> + <role>org.apache.maven.artifact.transform.ArtifactTransformation</role> + <role-hint>latest</role-hint> + <implementation>org.apache.maven.artifact.transform.LatestArtifactTransformation</implementation> + <requirements> + <requirement> + <role>org.apache.maven.artifact.manager.WagonManager</role> + </requirement> + </requirements> + </component> <!-- | | Resolver 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=215919&r1=215918&r2=215919&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 Mon Jul 11 21:13:40 2005 @@ -46,6 +46,11 @@ { return filename; } + + public boolean storedInArtifactDirectory() + { + return true; + } public String getGroupId() { 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=215919&r1=215918&r2=215919&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 Mon Jul 11 21:13:40 2005 @@ -58,6 +58,11 @@ * @return true or false */ boolean exists(); + + /** + * Whether this metadata should be stored alongside the artifact. + */ + boolean storedInArtifactDirectory(); String getGroupId(); 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=215919&r1=215918&r2=215919&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 Mon Jul 11 21:13:40 2005 @@ -57,7 +57,7 @@ path.append( formatAsDirectory( metadata.getGroupId() ) ).append( '/' ); path.append( metadata.getArtifactId() ).append( '/' ); - if ( !metadata.getBaseVersion().equals( "RELEASE" ) ) + if ( metadata.storedInArtifactDirectory() ) { path.append( metadata.getBaseVersion() ).append( '/' ); } Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java?rev=215919&r1=215918&r2=215919&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java Mon Jul 11 21:13:40 2005 @@ -2,9 +2,11 @@ import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.factory.ArtifactFactory; +import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException; import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolver; +import org.apache.maven.artifact.transform.LatestArtifactTransformation; +import org.apache.maven.artifact.transform.ReleaseArtifactTransformation; import org.apache.maven.model.Plugin; import org.apache.maven.model.ReportPlugin; import org.apache.maven.plugin.registry.MavenPluginRegistryBuilder; @@ -13,6 +15,8 @@ import org.apache.maven.plugin.registry.TrackableBase; import org.apache.maven.plugin.registry.io.xpp3.PluginRegistryXpp3Writer; import org.apache.maven.project.MavenProject; +import org.apache.maven.project.MavenProjectBuilder; +import org.apache.maven.project.artifact.MavenMetadataSource; import org.apache.maven.settings.Settings; import org.codehaus.plexus.components.inputhandler.InputHandler; import org.codehaus.plexus.logging.AbstractLogEnabled; @@ -58,6 +62,8 @@ private ArtifactFactory artifactFactory; + private MavenProjectBuilder projectBuilder; + private InputHandler inputHandler; // calculated. @@ -96,8 +102,8 @@ if ( Boolean.TRUE.equals( pluginUpdateOverride ) || ( !Boolean.FALSE.equals( pluginUpdateOverride ) && shouldCheckForUpdates( groupId, artifactId ) ) ) { - updatedVersion = resolveReleaseVersion( groupId, artifactId, project - .getPluginArtifactRepositories(), localRepository ); + updatedVersion = resolveMetaVersion( groupId, artifactId, project + .getPluginArtifactRepositories(), localRepository, ReleaseArtifactTransformation.RELEASE_VERSION ); if ( StringUtils.isNotEmpty( updatedVersion ) && !updatedVersion.equals( version ) ) { @@ -115,26 +121,45 @@ else { getLogger() - .info( "Plugin {" + constructPluginKey( groupId, artifactId ) + "} has updates." ); + .info( "Plugin \'" + constructPluginKey( groupId, artifactId ) + "\' has updates." ); } } } } } + + boolean forcePersist = false; + + // third pass...retrieve the version for RELEASE and also set that resolved version as the <useVersion/> + // in settings.xml. + if ( StringUtils.isEmpty( version ) ) + { + // 1. resolve the version to be used + version = resolveMetaVersion( groupId, artifactId, project.getPluginArtifactRepositories(), + localRepository, ReleaseArtifactTransformation.RELEASE_VERSION ); + + // 2. Set the updatedVersion so the user will be prompted whether to make this version permanent. + updatedVersion = version; + + // 3. Persist this version without prompting. + forcePersist = true; + promptToPersist = false; + } - // final pass...retrieve the version for RELEASE and also set that resolved version as the <useVersion/> + // final pass...retrieve the version for LATEST and also set that resolved version as the <useVersion/> // in settings.xml. if ( StringUtils.isEmpty( version ) ) { - // 1. resolve the version to be used THIS TIME - version = resolveReleaseVersion( groupId, artifactId, project.getPluginArtifactRepositories(), - localRepository ); + // 1. resolve the version to be used + version = resolveMetaVersion( groupId, artifactId, project.getPluginArtifactRepositories(), + localRepository, LatestArtifactTransformation.LATEST_VERSION ); // 2. Set the updatedVersion so the user will be prompted whether to make this version permanent. updatedVersion = version; - // 3. Tell the system to determine whether this update can/should be persisted. - promptToPersist = true; + // 3. Persist this version without prompting. + forcePersist = true; + promptToPersist = false; } // if we still haven't found a version, then fail early before we get into the update goop. @@ -160,6 +185,11 @@ } // We should persist by default if: + // + // 0. RELEASE or LATEST was used to resolve the plugin version (it's not in the registry) + // + // -OR- + // // 1. we detected a change in the plugin version from what was in the registry, or // a. the plugin is not registered // 2. the pluginUpdateOverride flag has NOT been set to Boolean.FALSE (suppression mode) @@ -167,13 +197,15 @@ // a. the registry is declared to be in autoUpdate mode // // NOTE: This is only the default value; it may be changed as the result of prompting the user. - boolean persistUpdate = promptToPersist && !Boolean.FALSE.equals( pluginUpdateOverride ) - && ( inInteractiveMode || autoUpdate ); + boolean persistUpdate = forcePersist || ( promptToPersist && !Boolean.FALSE.equals( pluginUpdateOverride ) + && ( inInteractiveMode || autoUpdate ) ); // retrieve the apply-to-all flag, if it's been set previously. Boolean applyToAll = settings.getRuntimeInfo().getApplyToAllPluginUpdates(); // Incorporate interactive-mode CLI overrides, and previous decisions on apply-to-all, if appropriate. + // + // don't prompt if RELEASE or LATEST was used to resolve the plugin version // don't prompt if not in interactive mode. // don't prompt if the CLI pluginUpdateOverride is set (either suppression or force mode will stop prompting) // don't prompt if the user has selected ALL/NONE previously in this session @@ -554,24 +586,28 @@ return pluginRegistry; } - private String resolveReleaseVersion( String groupId, String artifactId, List remoteRepositories, - ArtifactRepository localRepository ) + private String resolveMetaVersion( String groupId, String artifactId, List remoteRepositories, + ArtifactRepository localRepository, String metaVersionId ) throws PluginVersionResolutionException { - Artifact releaseArtifact = artifactFactory.createArtifact( groupId, artifactId, "RELEASE", - Artifact.SCOPE_RUNTIME, "maven-plugin" ); - + Artifact artifact = artifactFactory.createArtifact( groupId, artifactId, metaVersionId, + Artifact.SCOPE_RUNTIME, "pom" ); + + MavenMetadataSource metadataSource = new MavenMetadataSource( artifactResolver, projectBuilder, artifactFactory ); + + String version = null; try { - artifactResolver.resolve( releaseArtifact, remoteRepositories, localRepository ); + metadataSource.retrieve( artifact, localRepository, remoteRepositories ); + + version = artifact.getBaseVersion(); } - catch ( ArtifactResolutionException e ) + catch ( ArtifactMetadataRetrievalException e ) { - throw new PluginVersionResolutionException( groupId, artifactId, - "Cannot resolve RELEASE version of this plugin.", e ); + getLogger().debug( "Failed to resolve " + metaVersionId + " version", e ); } - - return releaseArtifact.getBaseVersion(); + + return version; } } 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=215919&r1=215918&r2=215919&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 11 21:13:40 2005 @@ -193,7 +193,7 @@ <process-test-resources>resources:testResources</process-test-resources> <test-compile>compiler:testCompile</test-compile> <test>surefire:test</test> - <package>jar:jar,plugin:generateUpdatedMapping</package> + <package>jar:jar,plugin:generateUpdatedMapping,plugin:addPluginArtifactMetadata</package> <install>install:install,plugin:installMapping</install> <deploy>deploy:deploy,plugin:deployMapping</deploy> </phases> @@ -285,6 +285,9 @@ <implementation>org.apache.maven.plugin.version.DefaultPluginVersionManager</implementation> <instantiation-strategy>per-lookup</instantiation-strategy> <requirements> + <requirement> + <role>org.apache.maven.project.MavenProjectBuilder</role> + </requirement> <requirement> <role>org.apache.maven.plugin.registry.MavenPluginRegistryBuilder</role> </requirement> Modified: maven/components/trunk/maven-plugins/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/deploy/DeployMojo.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/deploy/DeployMojo.java?rev=215919&r1=215918&r2=215919&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/deploy/DeployMojo.java (original) +++ maven/components/trunk/maven-plugins/maven-deploy-plugin/src/main/java/org/apache/maven/plugin/deploy/DeployMojo.java Mon Jul 11 21:13:40 2005 @@ -17,8 +17,6 @@ */ import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.DefaultArtifact; -import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.deployer.ArtifactDeployer; import org.apache.maven.artifact.deployer.ArtifactDeploymentException; import org.apache.maven.artifact.metadata.ArtifactMetadata; @@ -45,25 +43,11 @@ { /** - * @parameter expression="${project.groupId}" + * @parameter expression="${project.artifact}" * @required * @readonly */ - private String groupId; - - /** - * @parameter expression="${project.artifactId}" - * @required - * @readonly - */ - private String artifactId; - - /** - * @parameter expression="${project.version}" - * @required - * @readonly - */ - private String version; + private Artifact artifact; /** * @parameter expression="${project.packaging}" @@ -121,13 +105,6 @@ private List attachedArtifacts; /** - * @parameter expression="${component.org.apache.maven.artifact.factory.ArtifactFactory}" - * @required - * @readonly - */ - private ArtifactFactory artifactFactory; - - /** * @parameter expression="${updateReleaseInfo}" */ private boolean updateReleaseInfo = false; @@ -143,9 +120,6 @@ } // Deploy the POM - // TODO: maybe not strictly correct, while we should enfore that packaging has a type handler of the same id, we don't - Artifact artifact = artifactFactory.createArtifact( groupId, artifactId, version, null, packaging ); - boolean isPomArtifact = "pom".equals( packaging ); File pom = new File( parentDir, "pom.xml" ); if ( !isPomArtifact ) Modified: maven/components/trunk/maven-plugins/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java?rev=215919&r1=215918&r2=215919&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java (original) +++ maven/components/trunk/maven-plugins/maven-install-plugin/src/main/java/org/apache/maven/plugin/install/InstallMojo.java Mon Jul 11 21:13:40 2005 @@ -17,8 +17,6 @@ */ import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.DefaultArtifact; -import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.installer.ArtifactInstallationException; import org.apache.maven.artifact.metadata.ArtifactMetadata; import org.apache.maven.artifact.metadata.ReleaseArtifactMetadata; @@ -40,27 +38,6 @@ extends AbstractInstallMojo { /** - * @parameter expression="${project.groupId}" - * @required - * @readonly - */ - protected String groupId; - - /** - * @parameter expression="${project.artifactId}" - * @required - * @readonly - */ - protected String artifactId; - - /** - * @parameter expression="${project.version}" - * @required - * @readonly - */ - protected String version; - - /** * @parameter expression="${project.packaging}" * @required * @readonly @@ -91,28 +68,26 @@ * @parameter expression="${updateReleaseInfo}" */ private boolean updateReleaseInfo = false; - + /** - * @parameter expression="${project.attachedArtifacts} + * @parameter expression="${project.artifact}" * @required * @readonly */ - private List attachedArtifacts; + private Artifact artifact; /** - * @parameter expression="${component.org.apache.maven.artifact.factory.ArtifactFactory}" + * @parameter expression="${project.attachedArtifacts} * @required * @readonly */ - private ArtifactFactory artifactFactory; + private List attachedArtifacts; public void execute() throws MojoExecutionException { - // TODO: maybe not strictly correct, while we should enfore that packaging has a type handler of the same id, we don't - Artifact artifact = artifactFactory.createArtifact( groupId, artifactId, version, null, packaging ); - boolean isPomArtifact = "pom".equals( packaging ); + File pom = new File( basedir, "pom.xml" ); if ( !isPomArtifact ) { @@ -126,7 +101,7 @@ metadata.setVersion( artifact.getVersion() ); artifact.addMetadata( metadata ); } - + try { if ( isPomArtifact ) Modified: maven/components/trunk/maven-plugins/maven-plugin-plugin/pom.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/pom.xml?rev=215919&r1=215918&r2=215919&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-plugin-plugin/pom.xml (original) +++ maven/components/trunk/maven-plugins/maven-plugin-plugin/pom.xml Mon Jul 11 21:13:40 2005 @@ -36,6 +36,11 @@ </dependency> <dependency> <groupId>org.apache.maven</groupId> + <artifactId>maven-core</artifactId> + <version>2.0-beta-1-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> <artifactId>maven-project</artifactId> <version>2.0-beta-1-SNAPSHOT</version> </dependency> Added: 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=215919&view=auto ============================================================================== --- maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java (added) +++ maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java Mon Jul 11 21:13:40 2005 @@ -0,0 +1,37 @@ +package org.apache.maven.plugin.plugin.metadata; + +import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.metadata.LatestArtifactMetadata; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; + +/** 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. + * + * @parameter expression="${project.artifact}" + * @required + * @readonly + */ + private Artifact projectArtifact; + + public void execute() + throws MojoExecutionException + { + LatestArtifactMetadata metadata = new LatestArtifactMetadata( projectArtifact ); + + metadata.setVersion( projectArtifact.getVersion() ); + + projectArtifact.addMetadata( metadata ); + } + +} Propchange: maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AddPluginArtifactMetadataMojo.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" 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=215919&r1=215918&r2=215919&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 Mon Jul 11 21:13:40 2005 @@ -143,9 +143,8 @@ // ---------------------------------------------------------------------- // TODO: such a call in MavenMetadataSource too - packaging not really the intention of type - Artifact projectArtifact = artifactFactory.createArtifact( project.getGroupId(), project.getArtifactId(), - project.getVersion(), null, project.getPackaging() ); - + Artifact projectArtifact = project.getArtifact(); + Map managedVersions = createManagedVersionMap( project.getDependencyManagement() ); ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(), projectArtifact, managedVersions, @@ -406,6 +405,12 @@ project.addProfileProperties( profileProperties ); project.setActiveProfiles( activeProfiles ); + + // TODO: maybe not strictly correct, while we should enfore that packaging has a type handler of the same id, we don't + Artifact projectArtifact = artifactFactory.createArtifact( project.getGroupId(), project.getArtifactId(), + project.getVersion(), null, project.getPackaging() ); + + project.setArtifact( projectArtifact ); project.setPluginArtifactRepositories( ProjectUtils.buildArtifactRepositories( model.getPluginRepositories(), artifactRepositoryFactory, Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=215919&r1=215918&r2=215919&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java Mon Jul 11 21:13:40 2005 @@ -102,6 +102,8 @@ private List activeProfiles = new ArrayList(); private Set dependencyArtifacts; + + private Artifact artifact; public MavenProject( Model model ) { @@ -143,6 +145,16 @@ // ---------------------------------------------------------------------- // Accessors // ---------------------------------------------------------------------- + + public Artifact getArtifact() + { + return artifact; + } + + public void setArtifact( Artifact artifact ) + { + this.artifact = artifact; + } //@todo I would like to get rid of this. jvz. public Model getModel() --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]