Author: jdcasey Date: Mon Jul 11 15:08:58 2005 New Revision: 215890 URL: http://svn.apache.org/viewcvs?rev=215890&view=rev Log: Fixing issues related to MNG-377, where the plugins.xml metadata was being mishandled. Separated updating of this metadata into a separate mojo, bound to the 'package' phase, and put in a validator for the POM (POM has to have distributionRepository now for maven-plugin's) which is bound to the 'validate' phase. Put together an integration test that uses modello:java as a case where the pluginGroups must be consulted. Also had to change the Verifier to check a verifier.properties for failOnErrorOutput, which will suppress IT failures based on [ERROR] log output (modello outputs one of these, and kills the IT unnecessarily).
MNG-377 should be resolved at this point. Added: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManagementException.java - copied unchanged from r210153, maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManagementException.java maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java - copied, changed from r210153, maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java maven/components/trunk/maven-core-it/it0031/ maven/components/trunk/maven-core-it/it0031/expected-results.txt (with props) maven/components/trunk/maven-core-it/it0031/goals.txt (with props) maven/components/trunk/maven-core-it/it0031/pom.xml (with props) maven/components/trunk/maven-core-it/it0031/settings.xml (with props) maven/components/trunk/maven-core-it/it0031/src/ maven/components/trunk/maven-core-it/it0031/src/main/ maven/components/trunk/maven-core-it/it0031/src/main/mdo/ maven/components/trunk/maven-core-it/it0031/src/main/mdo/test.mdo (with props) maven/components/trunk/maven-core-it/it0031/system.properties (with props) maven/components/trunk/maven-core-it/it0031/verifier.properties (with props) maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/ValidatePluginPomMojo.java (with props) maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/GenerateUpdatedMappingMojo.java (with props) Removed: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManagementException.java maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AbstractMetadataPublisherMojo.java maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/AbstractPluginMappingPublisherMojo.java Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java maven/components/trunk/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java maven/components/trunk/maven-core-it/README.txt maven/components/trunk/maven-core-it/integration-tests.txt maven/components/trunk/maven-core-it/it0013/pom.xml maven/components/trunk/maven-core-it/it0015/pom.xml maven/components/trunk/maven-core-it/it0020/pom.xml maven/components/trunk/maven-core-it/it0021/pom.xml 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-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/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=215890&r1=215889&r2=215890&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 11 15:08:58 2005 @@ -6,9 +6,14 @@ import org.apache.maven.wagon.TransferFailedException; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.util.FileUtils; +import org.codehaus.plexus.util.IOUtil; import java.io.File; +import java.io.FileReader; import java.io.IOException; +import java.io.Reader; +import java.util.HashMap; +import java.util.Map; public class DefaultRepositoryMetadataManager extends AbstractLogEnabled @@ -18,61 +23,49 @@ // component requirement private WagonManager wagonManager; - public void resolve( RepositoryMetadata metadata, ArtifactRepository remote, ArtifactRepository local, String remoteId ) + // only resolve repository metadata once per session... + private Map resolved = new HashMap(); + + public void resolve( RepositoryMetadata metadata, ArtifactRepository remote, ArtifactRepository local ) throws RepositoryMetadataManagementException { - String metadataPath = local.formatAsFile( metadata.getRepositoryPath() ); - - String realignedPath = metadataPath.replace( File.separatorChar, '/' ); + File metadataFile = (File) resolved.get( metadata.getRepositoryPath() ); - if ( !realignedPath.startsWith( "/" ) ) + if ( metadataFile == null ) { - realignedPath = "/" + realignedPath; - } + metadataFile = constructLocalRepositoryFile( metadata, local, remote.getId() ); - realignedPath = "/REPOSITORY-INF/" + remoteId + realignedPath; - - File metadataFile = new File( local.getBasedir(), realignedPath ); - - if ( remote == null ) - { - if ( metadataFile.exists() ) + if ( remote == null ) { - getLogger().warn( "Cannot retrieve repository metadata for: " + metadataPath + ". Using locally cached version instead." ); - - getLogger().debug( "Error retrieving repository metadata: " + metadataPath + ". Reason: repository is null." ); - - metadata.setFile( metadataFile ); + throw new RepositoryMetadataManagementException( metadata, + "Cannot retrieve repository metadata from null repository." ); } else { - throw new RepositoryMetadataManagementException( metadata, "Cannot retrieve repository metadata from null repository." ); - } - } - else - { - try - { - wagonManager.getRepositoryMetadata( metadata, remote, metadataFile ); - - metadata.setFile( metadataFile ); - } - catch ( TransferFailedException e ) - { - throw new RepositoryMetadataManagementException( metadata, "Failed to download repository metadata.", e ); - } - catch ( ResourceDoesNotExistException e ) - { - if ( metadataFile.exists() ) + try { - getLogger().warn( "Cannot find repository metadata for: " + metadataPath + ". Using locally cached version instead." ); - getLogger().debug( "Error retrieving repository metadata: " + metadataPath, e ); - + wagonManager.getRepositoryMetadata( metadata, remote, metadataFile ); + + verifyLocalRepositoryFile( metadataFile ); + metadata.setFile( metadataFile ); } - else + catch ( TransferFailedException e ) { - throw new RepositoryMetadataManagementException( metadata, "Remote repository metadata not found.", e ); + throw new RepositoryMetadataManagementException( metadata, + "Failed to download repository metadata.", e ); + } + catch ( ResourceDoesNotExistException e ) + { + throw new RepositoryMetadataManagementException( metadata, "Remote repository metadata not found.", + e ); + } + catch ( IOException e ) + { + throw new RepositoryMetadataManagementException( + metadata, + "Download of repository metadata resulted in an invalid file.", + e ); } } } @@ -97,7 +90,7 @@ } public void install( RepositoryMetadata metadata, ArtifactRepository local, String remoteRepositoryId ) - throws RepositoryMetadataManagementException + throws RepositoryMetadataManagementException { String realignedPath = local.formatAsFile( metadata.getRepositoryPath() ); @@ -115,19 +108,58 @@ try { File dir = metadataFile.getParentFile(); - + if ( !dir.exists() ) { dir.mkdirs(); } - + FileUtils.copyFile( metadata.getFile(), metadataFile ); } catch ( IOException e ) { throw new RepositoryMetadataManagementException( metadata, "Failed to install repository metadata.", e ); } - + + } + + private File constructLocalRepositoryFile( RepositoryMetadata metadata, ArtifactRepository local, String remoteId ) + { + String metadataPath = local.formatAsFile( metadata.getRepositoryPath() ); + + String realignedPath = metadataPath.replace( File.separatorChar, '/' ); + + if ( !realignedPath.startsWith( "/" ) ) + { + realignedPath = "/" + realignedPath; + } + + realignedPath = "/REPOSITORY-INF/" + remoteId + realignedPath; + + return new File( local.getBasedir(), realignedPath ); + } + + private void verifyLocalRepositoryFile( File metadataFile ) + throws IOException + { + Reader metadataReader = null; + + try + { + metadataReader = new FileReader( metadataFile ); + + char[] cbuf = new char[16]; + + while ( metadataReader.read( cbuf ) > -1 ) + { + // do nothing...just verify that it can be read. + } + } + finally + { + IOUtil.close( metadataReader ); + } + } } Copied: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java (from r210153, 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-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java?p2=maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java&p1=maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java&r1=210153&r2=215890&rev=215890&view=diff ============================================================================== --- maven/components/trunk/maven-artifact/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 11 15:08:58 2005 @@ -4,8 +4,8 @@ public interface RepositoryMetadataManager { - - void resolve( RepositoryMetadata repositoryMetadata, ArtifactRepository remote, ArtifactRepository local, String remoteRepositoryId ) + + void resolve( RepositoryMetadata repositoryMetadata, ArtifactRepository remote, ArtifactRepository local ) throws RepositoryMetadataManagementException; void deploy( RepositoryMetadata repositoryMetadata, ArtifactRepository remote ) 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=215890&r1=215889&r2=215890&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 11 15:08:58 2005 @@ -98,7 +98,7 @@ // // ---------------------------------------------------------------------- - public void verify() + public void verify( boolean chokeOnErrorOutput ) throws VerificationException { List lines = loadFile( basedir, "expected-results.txt" ); @@ -110,15 +110,18 @@ verifyExpectedResult( line ); } - lines = loadFile( basedir, LOG_FILENAME ); - - for ( Iterator i = lines.iterator(); i.hasNext(); ) + if ( chokeOnErrorOutput ) { - String line = (String) i.next(); + lines = loadFile( basedir, LOG_FILENAME ); - if ( line.indexOf( "[ERROR]" ) >= 0 ) + for ( Iterator i = lines.iterator(); i.hasNext(); ) { - throw new VerificationException( "Error in execution." ); + String line = (String) i.next(); + + if ( line.indexOf( "[ERROR]" ) >= 0 ) + { + throw new VerificationException( "Error in execution." ); + } } } } @@ -563,7 +566,7 @@ public static void main( String args[] ) { String basedir = System.getProperty( "user.dir" ); - + localRepo = retrieveLocalRepo(); List tests = null; @@ -602,11 +605,17 @@ Properties properties = verifier.loadProperties( "system.properties" ); + Properties controlProperties = verifier.loadProperties( "verifier.properties" ); + + boolean chokeOnErrorOutput = Boolean.valueOf( controlProperties.getProperty( "failOnErrorOutput", "true" ) ).booleanValue(); + verifier.executeGoals( properties, "goals.txt" ); verifier.executeHook( "postbuild-hook.txt" ); - verifier.verify(); + System.out.println("*** Verifying: fail when [ERROR] detected? " + chokeOnErrorOutput + " ***"); + + verifier.verify( chokeOnErrorOutput ); verifier.resetStreams(); Modified: maven/components/trunk/maven-core-it/README.txt URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/README.txt?rev=215890&r1=215889&r2=215890&view=diff ============================================================================== --- maven/components/trunk/maven-core-it/README.txt (original) +++ maven/components/trunk/maven-core-it/README.txt Mon Jul 11 15:08:58 2005 @@ -93,6 +93,10 @@ it0030: Test for injection of dependencyManagement through parents of dependency poms. +it0031: Test usage of plugins.xml mapping file on the repository to resolve + plugin artifactId from it's prefix using the pluginGroups in + the provided settings.xml. + ------------------------------------------------------------------------------- - generated sources Modified: maven/components/trunk/maven-core-it/integration-tests.txt URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/integration-tests.txt?rev=215890&r1=215889&r2=215890&view=diff ============================================================================== --- maven/components/trunk/maven-core-it/integration-tests.txt (original) +++ maven/components/trunk/maven-core-it/integration-tests.txt Mon Jul 11 15:08:58 2005 @@ -1,3 +1,4 @@ +it0031 #it0030 #it0029 it0028 Modified: maven/components/trunk/maven-core-it/it0013/pom.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0013/pom.xml?rev=215890&r1=215889&r2=215890&view=diff ============================================================================== --- maven/components/trunk/maven-core-it/it0013/pom.xml (original) +++ maven/components/trunk/maven-core-it/it0013/pom.xml Mon Jul 11 15:08:58 2005 @@ -1,4 +1,4 @@ -<model> +<project> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-it0013-plugin</artifactId> @@ -20,4 +20,11 @@ <scope>test</scope> </dependency> </dependencies> -</model> + <distributionManagement> + <repository> + <id>test-repo</id> + <name>Test Repository</name> + <url>file:/tmp/testRepo</url> + </repository> + </distributionManagement> +</project> Modified: maven/components/trunk/maven-core-it/it0015/pom.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0015/pom.xml?rev=215890&r1=215889&r2=215890&view=diff ============================================================================== --- maven/components/trunk/maven-core-it/it0015/pom.xml (original) +++ maven/components/trunk/maven-core-it/it0015/pom.xml Mon Jul 11 15:08:58 2005 @@ -1,4 +1,4 @@ -<model> +<project> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-it0015-plugin</artifactId> @@ -29,4 +29,11 @@ </resource> </resources> </build> -</model> + <distributionManagement> + <repository> + <id>test-repo</id> + <name>Test Repository</name> + <url>file:/tmp/testRepo</url> + </repository> + </distributionManagement> +</project> Modified: maven/components/trunk/maven-core-it/it0020/pom.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0020/pom.xml?rev=215890&r1=215889&r2=215890&view=diff ============================================================================== --- maven/components/trunk/maven-core-it/it0020/pom.xml (original) +++ maven/components/trunk/maven-core-it/it0020/pom.xml Mon Jul 11 15:08:58 2005 @@ -1,4 +1,4 @@ -<model> +<project> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-it0020-plugin</artifactId> @@ -21,4 +21,11 @@ </resource> </resources> </build> -</model> + <distributionManagement> + <repository> + <id>test-repo</id> + <name>Test Repository</name> + <url>file:/tmp/testRepo</url> + </repository> + </distributionManagement> +</project> Modified: maven/components/trunk/maven-core-it/it0021/pom.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0021/pom.xml?rev=215890&r1=215889&r2=215890&view=diff ============================================================================== --- maven/components/trunk/maven-core-it/it0021/pom.xml (original) +++ maven/components/trunk/maven-core-it/it0021/pom.xml Mon Jul 11 15:08:58 2005 @@ -1,4 +1,4 @@ -<model> +<project> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-it0021-plugin</artifactId> @@ -25,4 +25,11 @@ </profile> </profiles> -</model> \ No newline at end of file + <distributionManagement> + <repository> + <id>test-repo</id> + <name>Test Repository</name> + <url>file:/tmp/testRepo</url> + </repository> + </distributionManagement> +</project> \ No newline at end of file Added: maven/components/trunk/maven-core-it/it0031/expected-results.txt URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0031/expected-results.txt?rev=215890&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it0031/expected-results.txt (added) +++ maven/components/trunk/maven-core-it/it0031/expected-results.txt Mon Jul 11 15:08:58 2005 @@ -0,0 +1 @@ +target/generated-sources/org/apache/maven/it/it0031/Root.java Propchange: maven/components/trunk/maven-core-it/it0031/expected-results.txt ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it0031/expected-results.txt ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it0031/goals.txt URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0031/goals.txt?rev=215890&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it0031/goals.txt (added) +++ maven/components/trunk/maven-core-it/it0031/goals.txt Mon Jul 11 15:08:58 2005 @@ -0,0 +1 @@ +modello:java Propchange: maven/components/trunk/maven-core-it/it0031/goals.txt ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it0031/goals.txt ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it0031/pom.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0031/pom.xml?rev=215890&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it0031/pom.xml (added) +++ maven/components/trunk/maven-core-it/it0031/pom.xml Mon Jul 11 15:08:58 2005 @@ -0,0 +1,24 @@ +<model> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.maven</groupId> + <artifactId>maven-it0031</artifactId> + <version>1.0-SNAPSHOT</version> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-core-it-plugin</artifactId> + <version>1.0-SNAPSHOT</version> + <configuration> + <pluginItem>${test}</pluginItem> + </configuration> + </plugin> + <!-- plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-projecthelp-plugin</artifactId> + <version>2.0-alpha-3-SNAPSHOT</version> + </plugin --> + </plugins> + </build> +</model> Propchange: maven/components/trunk/maven-core-it/it0031/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it0031/pom.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it0031/settings.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0031/settings.xml?rev=215890&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it0031/settings.xml (added) +++ maven/components/trunk/maven-core-it/it0031/settings.xml Mon Jul 11 15:08:58 2005 @@ -0,0 +1,19 @@ +<settings> + <pluginGroups> + <pluginGroup>org.codehaus.modello</pluginGroup> + </pluginGroups> + <mirrors> + <mirror> + <id>test</id> + <name>Test Mirror of ibiblio.org</name> + <url>http://test.maven.codehaus.org/maven2</url> + <mirrorOf>central</mirrorOf> + </mirror> + <mirror> + <id>test-plugins</id> + <name>Test Mirror of ibiblio.org Plugin Repository</name> + <url>http://test.maven.codehaus.org/maven2/plugins</url> + <mirrorOf>central-plugins</mirrorOf> + </mirror> + </mirrors> +</settings> Propchange: maven/components/trunk/maven-core-it/it0031/settings.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it0031/settings.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it0031/src/main/mdo/test.mdo URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0031/src/main/mdo/test.mdo?rev=215890&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it0031/src/main/mdo/test.mdo (added) +++ maven/components/trunk/maven-core-it/it0031/src/main/mdo/test.mdo Mon Jul 11 15:08:58 2005 @@ -0,0 +1,20 @@ +<model> + <id>lifecycle-mappings</id> + <name>LifecycleMappings</name> + <description><![CDATA[ + test modello file. + ]]></description> + <defaults> + <default> + <key>package</key> + <value>org.apache.maven.it.it0031</value> + </default> + </defaults> + <classes> + <class rootElement="true" xml.tagName="root"> + <name>Root</name> + <version>1.0.0</version> + <description>Root element of the test model.</description> + </class> + </classes> +</model> \ No newline at end of file Propchange: maven/components/trunk/maven-core-it/it0031/src/main/mdo/test.mdo ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it0031/src/main/mdo/test.mdo ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it0031/system.properties URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0031/system.properties?rev=215890&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it0031/system.properties (added) +++ maven/components/trunk/maven-core-it/it0031/system.properties Mon Jul 11 15:08:58 2005 @@ -0,0 +1,3 @@ +org.apache.maven.user-settings=settings.xml +model=src/main/mdo/test.mdo +version=1.0.0 Propchange: maven/components/trunk/maven-core-it/it0031/system.properties ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it0031/system.properties ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it0031/verifier.properties URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0031/verifier.properties?rev=215890&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it0031/verifier.properties (added) +++ maven/components/trunk/maven-core-it/it0031/verifier.properties Mon Jul 11 15:08:58 2005 @@ -0,0 +1 @@ +failOnErrorOutput=false Propchange: maven/components/trunk/maven-core-it/it0031/verifier.properties ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it0031/verifier.properties ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" 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=215890&r1=215889&r2=215890&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 15:08:58 2005 @@ -186,17 +186,16 @@ <configuration> <!-- START SNIPPET: maven-plugin-lifecycle --> <phases> + <validate>plugin:validatePom</validate> <generate-resources>plugin:descriptor</generate-resources> <process-resources>resources:resources</process-resources> <compile>compiler:compile</compile> <process-test-resources>resources:testResources</process-test-resources> <test-compile>compiler:testCompile</test-compile> <test>surefire:test</test> - <package>jar:jar</package> - <install>install:install</install> - <deploy>deploy:deploy</deploy> - <!-- install>install:install,plugin:install-mapping</install> - <deploy>deploy:deploy,plugin:deploy-mapping</deploy -->> + <package>jar:jar,plugin:generateUpdatedMapping</package> + <install>install:install,plugin:installMapping</install> + <deploy>deploy:deploy,plugin:deployMapping</deploy> </phases> <!-- END SNIPPET: maven-plugin-lifecycle --> </configuration> 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=215890&r1=215889&r2=215890&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 11 15:08:58 2005 @@ -93,7 +93,7 @@ try { - repositoryMetadataManager.resolve( metadata, repository, localRepository, repository.getId() ); + repositoryMetadataManager.resolve( metadata, repository, localRepository ); break; } Added: maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/ValidatePluginPomMojo.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/ValidatePluginPomMojo.java?rev=215890&view=auto ============================================================================== --- maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/ValidatePluginPomMojo.java (added) +++ maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/ValidatePluginPomMojo.java Mon Jul 11 15:08:58 2005 @@ -0,0 +1,33 @@ +package org.apache.maven.plugin.plugin; + +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.project.MavenProject; + +/** + * @phase validate + * @goal validatePom + */ +public class ValidatePluginPomMojo + extends AbstractMojo +{ + /** + * @parameter expression="${project}" + * @required + * @readonly + */ + private MavenProject project; + + public void execute() + throws MojoExecutionException + { + ArtifactRepository distributionRepository = project.getDistributionManagementArtifactRepository(); + + if ( distributionRepository == null ) + { + throw new MojoExecutionException( "You must provide a distributionManagement section with a repository element in your POM." ); + } + } + +} Propchange: maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/ValidatePluginPomMojo.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/ValidatePluginPomMojo.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/GenerateUpdatedMappingMojo.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/GenerateUpdatedMappingMojo.java?rev=215890&view=auto ============================================================================== --- maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/GenerateUpdatedMappingMojo.java (added) +++ maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/GenerateUpdatedMappingMojo.java Mon Jul 11 15:08:58 2005 @@ -0,0 +1,200 @@ +package org.apache.maven.plugin.plugin.metadata; + +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadata; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManagementException; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.descriptor.PluginDescriptor; +import org.apache.maven.plugin.mapping.MappedPlugin; +import org.apache.maven.plugin.mapping.PluginMap; +import org.apache.maven.plugin.mapping.io.xpp3.PluginMappingXpp3Reader; +import org.apache.maven.plugin.mapping.io.xpp3.PluginMappingXpp3Writer; +import org.apache.maven.plugin.mapping.metadata.PluginMappingMetadata; +import org.apache.maven.project.MavenProject; +import org.apache.maven.wagon.ResourceDoesNotExistException; +import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; +import java.util.Iterator; + +/** + * @phase package + * @goal generateUpdatedMapping + */ +public class GenerateUpdatedMappingMojo + extends AbstractMojo +{ + + /** + * @parameter + */ + private String goalPrefix; + + /** + * @parameter expression="${project}" + * @required + * @readonly + */ + private MavenProject project; + + /** + * @parameter expression="${project.build.directory}/repository-metadata" + * @required + * @readonly + */ + private String outputDirectory; + + /** + * @parameter expression="${component.org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager}" + * @required + * @readonly + */ + private RepositoryMetadataManager repositoryMetadataManager; + + /** + * @parameter expression="${localRepository}" + * @required + * @readonly + */ + private ArtifactRepository localRepository; + + public void execute() throws MojoExecutionException + { + ArtifactRepository distributionRepository = project.getDistributionManagementArtifactRepository(); + + PluginMappingXpp3Reader mappingReader = new PluginMappingXpp3Reader(); + + PluginMap pluginMap = null; + + RepositoryMetadata metadata = new PluginMappingMetadata( project.getGroupId() ); + + try + { + repositoryMetadataManager.resolve( metadata, distributionRepository, localRepository ); + + Reader reader = null; + + File metadataFile = metadata.getFile(); + + try + { + reader = new FileReader( metadataFile ); + + pluginMap = mappingReader.read( reader ); + } + catch ( IOException e ) + { + throw new MojoExecutionException( "Cannot read plugin-mapping metadata from file: " + metadataFile, e ); + } + catch ( XmlPullParserException e ) + { + throw new MojoExecutionException( "Cannot parse plugin-mapping metadata from file: " + metadataFile, e ); + } + finally + { + IOUtil.close( reader ); + } + } + catch ( RepositoryMetadataManagementException e ) + { + Throwable cause = e.getCause(); + + if ( cause != null && ( cause instanceof ResourceDoesNotExistException ) ) + { + getLog().info( "Cannot find " + metadata + " on remote repository. We'll create a new one." ); + getLog().debug( "Metadata " + metadata + " not found.", e ); + + pluginMap = new PluginMap(); + pluginMap.setGroupId( project.getGroupId() ); + } + else + { + throw new MojoExecutionException( "Cannot resolve plugin-mapping metadata: " + metadata, e ); + } + } + + boolean prefixAlreadyMapped = false; + + for ( Iterator it = pluginMap.getPlugins().iterator(); it.hasNext(); ) + { + MappedPlugin preExisting = (MappedPlugin) it.next(); + + if ( preExisting.getPrefix().equals( getGoalPrefix() ) ) + { + prefixAlreadyMapped = true; + + if ( !preExisting.getArtifactId().equals( project.getArtifactId() ) ) + { + // TODO: In this case, should we rather just replace the existing plugin mapping?? + + throw new MojoExecutionException( "Cannot map plugin to it's prefix in plugins.xml metadata; the prefix: \'" + getGoalPrefix() + "\' is already mapped to: " + preExisting.getArtifactId() ); + } + else + { + getLog().info( "NOT updating plugins.xml metadata; this plugin is already mapped." ); + } + + break; + } + } + + if ( !prefixAlreadyMapped ) + { + MappedPlugin mappedPlugin = new MappedPlugin(); + + mappedPlugin.setArtifactId( project.getArtifactId() ); + + mappedPlugin.setPrefix( getGoalPrefix() ); + + pluginMap.addPlugin( mappedPlugin ); + + Writer writer = null; + try + { + File updatedMetadataFile = new File( outputDirectory, metadata.getRepositoryPath() ).getAbsoluteFile(); + + File dir = updatedMetadataFile.getParentFile(); + + if ( !dir.exists() ) + { + dir.mkdirs(); + } + + writer = new FileWriter( updatedMetadataFile ); + + PluginMappingXpp3Writer mappingWriter = new PluginMappingXpp3Writer(); + + mappingWriter.write( writer, pluginMap ); + + metadata.setFile( updatedMetadataFile ); + } + catch ( IOException e ) + { + throw new MojoExecutionException( "Error writing repository metadata to build directory.", e ); + } + finally + { + IOUtil.close( writer ); + } + } + } + + private String getGoalPrefix() + { + if ( goalPrefix == null ) + { + goalPrefix = PluginDescriptor.getGoalPrefixFromArtifactId( project.getArtifactId() ); + } + + return goalPrefix; + } + +} Propchange: maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/GenerateUpdatedMappingMojo.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/GenerateUpdatedMappingMojo.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Modified: maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java?rev=215890&r1=215889&r2=215890&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java (original) +++ maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingDeployMojo.java Mon Jul 11 15:08:58 2005 @@ -1,19 +1,69 @@ package org.apache.maven.plugin.plugin.metadata; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadata; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManagementException; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager; +import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.mapping.metadata.PluginMappingMetadata; +import org.apache.maven.project.MavenProject; + +import java.io.File; /** - * @goal deploy-mapping + * @goal deployMapping * @phase deploy */ public class PluginMappingDeployMojo - extends AbstractPluginMappingPublisherMojo + extends AbstractMojo { + /** + * @parameter expression="${project}" + * @required + * @readonly + */ + private MavenProject project; + + /** + * @parameter expression="${component.org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager}" + * @required + * @readonly + */ + private RepositoryMetadataManager repositoryMetadataManager; + + /** + * @parameter expression="${project.build.directory}/repository-metadata" + * @required + * @readonly + */ + private String outputDirectory; + public void execute() throws MojoExecutionException { - publish( true ); + ArtifactRepository distributionRepository = project.getDistributionManagementArtifactRepository(); + + RepositoryMetadata metadata = new PluginMappingMetadata( project.getGroupId() ); + + File updatedMetadataFile = new File( outputDirectory, metadata.getRepositoryPath() ).getAbsoluteFile(); + + if ( !updatedMetadataFile.exists() ) + { + throw new MojoExecutionException( "Cannot find updated " + metadata + " in file: \'" + updatedMetadataFile + "\'. This seems to indicate that the 'package' lifecycle phase didn't succeed." ); + } + + metadata.setFile( updatedMetadataFile ); + + try + { + repositoryMetadataManager.deploy( metadata, distributionRepository ); + } + catch ( RepositoryMetadataManagementException e ) + { + throw new MojoExecutionException( "Error updating plugin-mapping metadata.", e ); + } } } Modified: maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java?rev=215890&r1=215889&r2=215890&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java (original) +++ maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java Mon Jul 11 15:08:58 2005 @@ -1,19 +1,78 @@ package org.apache.maven.plugin.plugin.metadata; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadata; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManagementException; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager; +import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.mapping.metadata.PluginMappingMetadata; +import org.apache.maven.project.MavenProject; + +import java.io.File; /** - * @goal install-mapping + * @goal installMapping * @phase install */ public class PluginMappingInstallMojo - extends AbstractPluginMappingPublisherMojo + extends AbstractMojo { + /** + * @parameter expression="${project}" + * @required + * @readonly + */ + private MavenProject project; + + /** + * @parameter expression="${component.org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager}" + * @required + * @readonly + */ + private RepositoryMetadataManager repositoryMetadataManager; + + /** + * @parameter expression="${localRepository}" + * @required + * @readonly + */ + private ArtifactRepository localRepository; + + /** + * @parameter expression="${project.build.directory}/repository-metadata" + * @required + * @readonly + */ + private String outputDirectory; + public void execute() throws MojoExecutionException { - publish( false ); + ArtifactRepository distributionRepository = project.getDistributionManagementArtifactRepository(); + + String remoteRepositoryId = distributionRepository.getId(); + + RepositoryMetadata metadata = new PluginMappingMetadata( project.getGroupId() ); + + File updatedMetadataFile = new File( outputDirectory, metadata.getRepositoryPath() ).getAbsoluteFile(); + + if ( !updatedMetadataFile.exists() ) + { + throw new MojoExecutionException( "Cannot find updated " + metadata + " in file: \'" + updatedMetadataFile + "\'. This seems to indicate that the 'package' lifecycle phase didn't succeed." ); + } + + metadata.setFile( updatedMetadataFile ); + + try + { + repositoryMetadataManager.install( metadata, localRepository, remoteRepositoryId ); + } + catch ( RepositoryMetadataManagementException e ) + { + throw new MojoExecutionException( "Failed to install " + metadata, e ); + } } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]