Author: jdcasey Date: Mon Sep 19 10:58:46 2005 New Revision: 290221 URL: http://svn.apache.org/viewcvs?rev=290221&view=rev Log: Resolving: MNG-878, MNG-880 (again)
o Added full resolution of plugins listed in the project hierarchy o Added better resolution of snapshots within the reactor, and resolution of ${finalName} o Added usage of fully inherited model for release-pom.xml, to enable convergence of all POM inheritance to a single POM with no parent. o Improved handling of SCM info in a reactored situation. Added: maven/components/trunk/maven-core-it/it2002/project/subproject/ maven/components/trunk/maven-core-it/it2002/project/subproject/pom.xml (with props) maven/components/trunk/maven-core-it/it2002/project/subproject/src/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/java/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/java/org/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/java/org/apache/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/java/org/apache/maven/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/java/org/apache/maven/it2002/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/java/org/apache/maven/it2002/Thing.java (with props) maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/resources/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/resources/META-INF/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/resources/META-INF/plexus/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/resources/META-INF/plexus/components.xml (with props) maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/java/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/java/org/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/java/org/apache/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/java/org/apache/maven/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/java/org/apache/maven/it2002/ maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java (with props) maven/components/trunk/maven-core-it/it2002/project/subproject2/ maven/components/trunk/maven-core-it/it2002/project/subproject2/pom.xml (with props) maven/components/trunk/maven-core-it/it2002/project/subproject2/src/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/java/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/java/org/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/java/org/apache/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/java/org/apache/maven/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/java/org/apache/maven/it2002/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/java/org/apache/maven/it2002/Thing.java (with props) maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/resources/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/resources/META-INF/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/resources/META-INF/plexus/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/resources/META-INF/plexus/components.xml (with props) maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/java/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/java/org/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/java/org/apache/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/java/org/apache/maven/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/java/org/apache/maven/it2002/ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java (with props) Removed: maven/components/trunk/maven-core-it/it2002/project/src/ Modified: maven/components/trunk/maven-core-it/it2002/project/pom.xml maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ProjectScmRewriter.java maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java maven/components/trunk/maven-plugins/pom.xml Modified: maven/components/trunk/maven-core-it/it2002/project/pom.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it2002/project/pom.xml?rev=290221&r1=290220&r2=290221&view=diff ============================================================================== --- maven/components/trunk/maven-core-it/it2002/project/pom.xml (original) +++ maven/components/trunk/maven-core-it/it2002/project/pom.xml Mon Sep 19 10:58:46 2005 @@ -3,6 +3,12 @@ <groupId>org.apache.maven.it2002</groupId> <artifactId>project</artifactId> <version>1.0-SNAPSHOT</version> + <packaging>pom</packaging> + + <modules> + <module>subproject</module> + <module>subproject2</module> + </modules> <dependencies> <dependency> @@ -11,18 +17,6 @@ <version>1.0-alpha-6</version> <scope>test</scope> </dependency> - <dependency> - <groupId>org.apache.maven</groupId> - <artifactId>maven-artifact</artifactId> - <version>2.0-beta-1</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.maven</groupId> - <artifactId>maven-artifact-manager</artifactId> - <version>2.0-beta-1</version> - <scope>test</scope> - </dependency> </dependencies> <repositories> @@ -56,20 +50,21 @@ <tagBase>file://${project.file.parentFile.parentFile}/target/svnroot/project/tags</tagBase> </properties> - <!-- build> + <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-release-plugin</artifactId> - <version>2.0-beta-1-SNAPSHOT</version> + <artifactId>maven-compiler-plugin</artifactId> + <version>2.0-beta-1</version> </plugin> </plugins> - </build --> + </build> <reporting> <plugins> <plugin> <artifactId>maven-project-info-reports-plugin</artifactId> + <version>2.0-alpha-1</version> </plugin> </plugins> </reporting> Added: maven/components/trunk/maven-core-it/it2002/project/subproject/pom.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it2002/project/subproject/pom.xml?rev=290221&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it2002/project/subproject/pom.xml (added) +++ maven/components/trunk/maven-core-it/it2002/project/subproject/pom.xml Mon Sep 19 10:58:46 2005 @@ -0,0 +1,26 @@ +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.maven.it2002</groupId> + <artifactId>project</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + + <artifactId>project-sub1</artifactId> + + <dependencies> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>2.0-beta-1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact-manager</artifactId> + <version>2.0-beta-1</version> + <scope>test</scope> + </dependency> + </dependencies> + +</project> Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject/pom.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/java/org/apache/maven/it2002/Thing.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/java/org/apache/maven/it2002/Thing.java?rev=290221&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/java/org/apache/maven/it2002/Thing.java (added) +++ maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/java/org/apache/maven/it2002/Thing.java Mon Sep 19 10:58:46 2005 @@ -0,0 +1,9 @@ +package org.apache.maven.it2002; + +public class Thing +{ + public static final String ROLE = Thing.class.getName(); + + private String type; +} + Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/java/org/apache/maven/it2002/Thing.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/java/org/apache/maven/it2002/Thing.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/resources/META-INF/plexus/components.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/resources/META-INF/plexus/components.xml?rev=290221&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/resources/META-INF/plexus/components.xml (added) +++ maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/resources/META-INF/plexus/components.xml Mon Sep 19 10:58:46 2005 @@ -0,0 +1,8 @@ +<component-set> + <components> + <component> + <role>org.apache.maven.it2002.Thing</role> + <implementation>org.apache.maven.it2002.Thing</implementation> + </component> + </components> +</component-set> \ No newline at end of file Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/resources/META-INF/plexus/components.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject/src/main/resources/META-INF/plexus/components.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java?rev=290221&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java (added) +++ maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java Mon Sep 19 10:58:46 2005 @@ -0,0 +1,20 @@ +package org.apache.maven.it2002; + +import org.apache.maven.artifact.resolver.ArtifactResolver; +import org.codehaus.plexus.PlexusTestCase; + +public class ContainerDependentTest extends PlexusTestCase +{ + + public void testOne() throws Exception + { + ArtifactResolver resolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE ); + + assertNotNull( resolver ); + + Thing thing = (Thing) lookup( Thing.ROLE ); + + assertNotNull( thing ); + } + +} Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it2002/project/subproject2/pom.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it2002/project/subproject2/pom.xml?rev=290221&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it2002/project/subproject2/pom.xml (added) +++ maven/components/trunk/maven-core-it/it2002/project/subproject2/pom.xml Mon Sep 19 10:58:46 2005 @@ -0,0 +1,31 @@ +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.maven.it2002</groupId> + <artifactId>project</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + + <artifactId>project-sub2</artifactId> + + <dependencies> + <dependency> + <groupId>org.apache.maven.it2002</groupId> + <artifactId>project-sub1</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>2.0-beta-1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact-manager</artifactId> + <version>2.0-beta-1</version> + <scope>test</scope> + </dependency> + </dependencies> + +</project> Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject2/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject2/pom.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/java/org/apache/maven/it2002/Thing.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/java/org/apache/maven/it2002/Thing.java?rev=290221&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/java/org/apache/maven/it2002/Thing.java (added) +++ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/java/org/apache/maven/it2002/Thing.java Mon Sep 19 10:58:46 2005 @@ -0,0 +1,9 @@ +package org.apache.maven.it2002; + +public class Thing +{ + public static final String ROLE = Thing.class.getName(); + + private String type; +} + Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/java/org/apache/maven/it2002/Thing.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/java/org/apache/maven/it2002/Thing.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/resources/META-INF/plexus/components.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/resources/META-INF/plexus/components.xml?rev=290221&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/resources/META-INF/plexus/components.xml (added) +++ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/resources/META-INF/plexus/components.xml Mon Sep 19 10:58:46 2005 @@ -0,0 +1,8 @@ +<component-set> + <components> + <component> + <role>org.apache.maven.it2002.Thing</role> + <implementation>org.apache.maven.it2002.Thing</implementation> + </component> + </components> +</component-set> \ No newline at end of file Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/resources/META-INF/plexus/components.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject2/src/main/resources/META-INF/plexus/components.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java?rev=290221&view=auto ============================================================================== --- maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java (added) +++ maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java Mon Sep 19 10:58:46 2005 @@ -0,0 +1,20 @@ +package org.apache.maven.it2002; + +import org.apache.maven.artifact.resolver.ArtifactResolver; +import org.codehaus.plexus.PlexusTestCase; + +public class ContainerDependentTest extends PlexusTestCase +{ + + public void testOne() throws Exception + { + ArtifactResolver resolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE ); + + assertNotNull( resolver ); + + Thing thing = (Thing) lookup( Thing.ROLE ); + + assertNotNull( thing ); + } + +} Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core-it/it2002/project/subproject2/src/test/java/org/apache/maven/it2002/ContainerDependentTest.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Modified: maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml?rev=290221&r1=290220&r2=290221&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml (original) +++ maven/components/trunk/maven-plugins/maven-release-plugin/pom.xml Mon Sep 19 10:58:46 2005 @@ -11,6 +11,16 @@ <version>2.0-beta-2-SNAPSHOT</version> <dependencies> <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-core</artifactId> + <version>2.0-beta-1</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>2.0-beta-1</version> + </dependency> + <dependency> <groupId>org.apache.maven.scm</groupId> <artifactId>maven-scm-api</artifactId> <version>1.0-alpha-2</version> @@ -50,4 +60,4 @@ <version>1.0-alpha-2</version> </dependency> </dependencies> -</project> \ No newline at end of file +</project> Modified: maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java?rev=290221&r1=290220&r2=290221&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java (original) +++ maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java Mon Sep 19 10:58:46 2005 @@ -31,7 +31,10 @@ import org.apache.maven.model.PluginManagement; import org.apache.maven.model.ReportPlugin; import org.apache.maven.model.Reporting; +import org.apache.maven.model.Resource; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.version.PluginVersionManager; +import org.apache.maven.plugin.version.PluginVersionResolutionException; import org.apache.maven.plugins.release.helpers.ProjectScmRewriter; import org.apache.maven.plugins.release.helpers.ProjectVersionResolver; import org.apache.maven.plugins.release.helpers.ReleaseProgressTracker; @@ -39,6 +42,7 @@ import org.apache.maven.project.MavenProject; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFile; +import org.apache.maven.settings.Settings; import org.codehaus.plexus.components.inputhandler.InputHandler; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.StringUtils; @@ -90,12 +94,15 @@ private boolean interactive; /** - * @parameter expression="${component.org.apache.maven.artifact.metadata.ArtifactMetadataSource}" - * @required - * @readonly + * @component role="org.apache.maven.artifact.metadata.ArtifactMetadataSource" */ private ArtifactMetadataSource artifactMetadataSource; - + + /** + * @component role="org.apache.maven.plugin.version.PluginVersionManager" + */ + private PluginVersionManager pluginVersionManager; + /** * @parameter expression="${component.org.codehaus.plexus.components.inputhandler.InputHandler}" * @required @@ -109,6 +116,13 @@ * @readonly */ private ArtifactRepository localRepository; + + /** + * @parameter expression="${settings}" + * @required + * @readonly + */ + private Settings settings; /** * @parameter expression="${reactorProjects}" @@ -239,7 +253,7 @@ } } - removeReleasePoms(); +// removeReleasePoms(); checkInNextSnapshot(); @@ -819,17 +833,37 @@ MavenProject project = (MavenProject) it.next(); MavenProject releaseProject = new MavenProject( project ); - Model releaseModel = releaseProject.getOriginalModel(); - fixNullValueInModel( releaseModel, project.getOriginalModel() ); + Model releaseModel = releaseProject.getModel(); + fixNullValueInModel( releaseModel, project.getModel() ); - // Remove parent -/* TODO: put this back after it is properly resolved again - if ( releaseModel.getParent() != null ) + String projectVersion = releaseModel.getVersion(); + if ( ArtifactUtils.isSnapshot( projectVersion ) ) { - releaseModel.setParent( null ); + String snapshotVersion = projectVersion; + + projectVersion = getVersionResolver().getResolvedVersion( releaseModel.getGroupId(), releaseModel.getArtifactId() ); + + if ( ArtifactUtils.isSnapshot( projectVersion ) ) + { + throw new MojoExecutionException( "MAJOR PROBLEM!!! Cannot find resolved version to be used in releasing project: " + releaseProject.getId() ); + } + + releaseModel.setVersion( projectVersion ); + + String finalName = releaseModel.getBuild().getFinalName(); + + if ( finalName.equals( releaseModel.getArtifactId() + "-" + snapshotVersion ) ) + { + releaseModel.getBuild().setFinalName( releaseModel.getArtifactId() + "-" + projectVersion ); + } + else if ( finalName.indexOf( "SNAPSHOT" ) > -1 ) + { + throw new MojoExecutionException( "Cannot reliably adjust the finalName of project: " + releaseProject.getId() ); + } } + + releaseModel.setParent( null ); -*/ Set artifacts = releaseProject.getArtifacts(); if ( artifacts != null ) @@ -840,12 +874,24 @@ for ( Iterator i = releaseProject.getArtifacts().iterator(); i.hasNext(); ) { Artifact artifact = (Artifact) i.next(); - + Dependency newdep = new Dependency(); newdep.setArtifactId( artifact.getArtifactId() ); newdep.setGroupId( artifact.getGroupId() ); - newdep.setVersion( artifact.getVersion() ); + + String version = artifact.getVersion(); + if ( artifact.isSnapshot() ) + { + version = getVersionResolver().getResolvedVersion(artifact.getGroupId(), artifact.getArtifactId() ); + + if ( ArtifactUtils.isSnapshot( version ) ) + { + throw new MojoExecutionException( "Unresolved SNAPSHOT version of: " + artifact.getId() + ". Cannot proceed with release." ); + } + } + + newdep.setVersion( version ); newdep.setType( artifact.getType() ); newdep.setScope( artifact.getScope() ); newdep.setClassifier( artifact.getClassifier() ); @@ -858,21 +904,30 @@ // Use original - don't want the lifecycle introduced ones // TODO: but is it the right settings? - Build originalModel = releaseProject.getOriginalModel().getBuild(); - List plugins = originalModel != null ? originalModel.getPlugins() : null; + Build model = releaseProject.getModel().getBuild(); + List plugins = model != null ? model.getPlugins() : null; if ( plugins != null ) { //Rewrite plugins version - Map pluginArtifacts = releaseProject.getPluginArtifactMap(); - for ( Iterator i = plugins.iterator(); i.hasNext(); ) { Plugin plugin = (Plugin) i.next(); - Artifact artifact = (Artifact) pluginArtifacts.get( plugin.getKey() ); - - String version = resolveVersion( artifact, "plugin", releaseProject ); + String version; + try + { + version = pluginVersionManager.resolvePluginVersion( plugin.getGroupId(), plugin.getArtifactId(), project, settings, localRepository ); + } + catch ( PluginVersionResolutionException e ) + { + throw new MojoExecutionException( "Cannot resolve version for plugin: " + plugin ); + } + + if ( ArtifactUtils.isSnapshot(version)) + { + throw new MojoExecutionException( "Resolved version of plugin is a snapshot. Please release this plugin before releasing this project.\n\nGroupId: " + plugin.getGroupId() + "\nArtifactId: " + plugin.getArtifactId() + "\nResolved Version: " + version + "\n\n" ); + } plugin.setVersion( version ); } @@ -883,21 +938,25 @@ if ( reports != null ) { //Rewrite report version - Map reportArtifacts = releaseProject.getReportArtifactMap(); - - getLog().info( "Using report-artifact map with " + reportArtifacts.size() + " entries." ); - for ( Iterator i = reports.iterator(); i.hasNext(); ) { ReportPlugin plugin = (ReportPlugin) i.next(); - String pluginKey = plugin.getKey(); - - getLog().info( "Looking up report artifact for: \'" + pluginKey + "\'" ); + String version; + try + { + version = pluginVersionManager.resolvePluginVersion( plugin.getGroupId(), plugin + .getArtifactId(), project, settings, localRepository, true ); + } + catch ( PluginVersionResolutionException e ) + { + throw new MojoExecutionException( "Cannot resolve version for report plugin: " + plugin ); + } - Artifact artifact = (Artifact) reportArtifacts.get( pluginKey ); - - String version = resolveVersion( artifact, "report", releaseProject ); + if ( ArtifactUtils.isSnapshot(version)) + { + throw new MojoExecutionException( "Resolved version of plugin is a snapshot. Please release this report plugin before releasing this project.\n\nGroupId: " + plugin.getGroupId() + "\nArtifactId: " + plugin.getArtifactId() + "\nResolved Version: " + version + "\n\n" ); + } plugin.setVersion( version ); } @@ -923,6 +982,15 @@ ext.setVersion( version ); } } + + try + { + relativizeBuildPaths( model, project.getFile().getParentFile().getCanonicalPath() ); + } + catch ( IOException e ) + { + throw new MojoExecutionException( "Cannot relativize build paths for: " + project.getId(), e ); + } File releasePomFile = new File( releaseProject.getFile().getParentFile(), RELEASE_POM ); @@ -932,7 +1000,7 @@ { writer = new FileWriter( releasePomFile ); - releaseProject.writeOriginalModel( writer ); + releaseProject.writeModel( writer ); } catch ( IOException e ) { @@ -974,6 +1042,77 @@ } } + private void relativizeBuildPaths( Build build, String canonicalBasedir ) + { + int basePathLength = canonicalBasedir.length() + 1; + + String directory = build.getDirectory(); + if ( directory.startsWith( canonicalBasedir ) ) + { + build.setDirectory( directory.substring( basePathLength ) ); + } + + String outDir = build.getOutputDirectory(); + if ( outDir.startsWith( canonicalBasedir ) ) + { + build.setOutputDirectory( outDir.substring( basePathLength ) ); + } + + String testOutDir = build.getTestOutputDirectory(); + if ( testOutDir.startsWith( canonicalBasedir ) ) + { + build.setTestOutputDirectory( testOutDir.substring( basePathLength ) ); + } + + String srcDir = build.getSourceDirectory(); + if ( srcDir.startsWith( canonicalBasedir ) ) + { + build.setSourceDirectory( srcDir.substring( basePathLength ) ); + } + + String scriptSrcDir = build.getScriptSourceDirectory(); + if ( scriptSrcDir.startsWith( canonicalBasedir ) ) + { + build.setScriptSourceDirectory( scriptSrcDir.substring( basePathLength ) ); + } + + String testSrcDir = build.getTestSourceDirectory(); + if ( testSrcDir.startsWith( canonicalBasedir ) ) + { + build.setTestSourceDirectory( testSrcDir.substring( basePathLength ) ); + } + + List resources = build.getResources(); + if ( resources != null ) + { + for ( Iterator it = resources.iterator(); it.hasNext(); ) + { + Resource resource = (Resource) it.next(); + + String dir = resource.getDirectory(); + if ( dir.startsWith( canonicalBasedir ) ) + { + resource.setDirectory( dir.substring( basePathLength ) ); + } + } + } + + List testResources = build.getTestResources(); + if ( testResources != null ) + { + for ( Iterator it = testResources.iterator(); it.hasNext(); ) + { + Resource resource = (Resource) it.next(); + + String dir = resource.getDirectory(); + if ( dir.startsWith( canonicalBasedir ) ) + { + resource.setDirectory( dir.substring( basePathLength ) ); + } + } + } + } + private void fixNullValueInModel( Model modelToFix, Model correctModel ) { if ( modelToFix.getModelVersion() != null ) @@ -1054,7 +1193,6 @@ private String resolveVersion( Artifact artifact, String artifactUsage, MavenProject project ) throws MojoExecutionException { - getLog().info( "Resolving version for: " + artifact ); String resolvedVersion = getVersionResolver().getResolvedVersion( artifact.getGroupId(), artifact.getArtifactId() ); Modified: maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ProjectScmRewriter.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ProjectScmRewriter.java?rev=290221&r1=290220&r2=290221&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ProjectScmRewriter.java (original) +++ maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ProjectScmRewriter.java Mon Sep 19 10:58:46 2005 @@ -37,12 +37,6 @@ { String projectId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() ); - if ( project.getScm() == null ) - { - throw new MojoExecutionException( - "Project: " + projectId + " does not have a SCM section! Cannot proceed with release." ); - } - Model model = project.getOriginalModel(); Scm scm = model.getScm(); @@ -75,8 +69,18 @@ if ( scmConnection != null && scmConnection.startsWith( "scm:svn" ) ) { scm.setConnection( convertSvnConnectionString( scmConnection, tag ) ); - scm.setDeveloperConnection( convertSvnConnectionString( scm.getDeveloperConnection(), tag ) ); - scm.setUrl( convertSvnConnectionString( scm.getUrl(), tag ) ); + + String devConnection = scm.getDeveloperConnection(); + if ( devConnection != null ) + { + scm.setDeveloperConnection( convertSvnConnectionString( devConnection, tag ) ); + } + + String url = scm.getUrl(); + if ( url != null ) + { + scm.setUrl( convertSvnConnectionString( url, tag ) ); + } } } } Modified: maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java?rev=290221&r1=290220&r2=290221&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java (original) +++ maven/components/trunk/maven-plugins/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java Mon Sep 19 10:58:46 2005 @@ -198,25 +198,56 @@ public void addOriginalScmInfo( String projectId, Scm scm ) { - releaseProperties.setProperty( SCM_INFO_PREFIX + projectId + ".connection", scm.getConnection() ); - releaseProperties.setProperty( SCM_INFO_PREFIX + projectId + ".developerConnection", - scm.getDeveloperConnection() ); - releaseProperties.setProperty( SCM_INFO_PREFIX + projectId + ".url", scm.getUrl() ); - releaseProperties.setProperty( SCM_INFO_PREFIX + projectId + ".tag", scm.getTag() ); + String connection = scm.getConnection(); + if ( connection != null ) + { + releaseProperties.setProperty( SCM_INFO_PREFIX + projectId + ".connection", connection ); + } + + String devConnection = scm.getDeveloperConnection(); + if ( devConnection != null ) + { + releaseProperties.setProperty( SCM_INFO_PREFIX + projectId + ".developerConnection", + devConnection ); + } + + String url = scm.getUrl(); + if ( url != null ) + { + releaseProperties.setProperty( SCM_INFO_PREFIX + projectId + ".url", url ); + } + + String tag = scm.getTag(); + if ( tag != null ) + { + releaseProperties.setProperty( SCM_INFO_PREFIX + projectId + ".tag", tag ); + } } public void restoreScmInfo( String projectId, Scm scm ) { String connection = releaseProperties.getProperty( SCM_INFO_PREFIX + projectId + ".connection" ); - if ( connection == null ) + if ( connection != null ) + { + scm.setConnection( connection ); + } + + String devConnection = releaseProperties.getProperty( SCM_INFO_PREFIX + projectId + ".connection" ); + if ( devConnection != null ) + { + scm.setDeveloperConnection( devConnection ); + } + + String url = releaseProperties.getProperty( SCM_INFO_PREFIX + projectId + ".url" ); + if ( url != null ) + { + scm.setUrl( url ); + } + + String tag = releaseProperties.getProperty( SCM_INFO_PREFIX + projectId + ".tag" ); + if ( tag != null ) { - throw new IllegalArgumentException( - "Project \'" + projectId + "\' has not had its SCM info cached. Cannot restore uncached SCM info." ); + scm.setTag( tag ); } - scm.setConnection( connection ); - scm.setDeveloperConnection( - releaseProperties.getProperty( SCM_INFO_PREFIX + projectId + ".developerConnection" ) ); - scm.setUrl( releaseProperties.getProperty( SCM_INFO_PREFIX + projectId + ".url" ) ); - scm.setTag( releaseProperties.getProperty( SCM_INFO_PREFIX + projectId + ".tag" ) ); } } Modified: maven/components/trunk/maven-plugins/pom.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/pom.xml?rev=290221&r1=290220&r2=290221&view=diff ============================================================================== --- maven/components/trunk/maven-plugins/pom.xml (original) +++ maven/components/trunk/maven-plugins/pom.xml Mon Sep 19 10:58:46 2005 @@ -152,7 +152,7 @@ <module>maven-assembly-plugin</module> <module>maven-checkstyle-plugin</module> <module>maven-clean-plugin</module> - <module>maven-clover-plugin</module> + <!-- module>maven-clover-plugin</module --> <module>maven-compiler-plugin</module> <module>maven-deploy-plugin</module> <module>maven-eclipse-plugin</module> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]