Index: src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java =================================================================== --- src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java (revision 659511) +++ src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java (working copy) @@ -19,6 +19,12 @@ * under the License. */ +import java.io.File; +import java.io.IOException; +import java.util.Iterator; +import java.util.List; + +import org.apache.maven.project.MavenProject; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.command.tag.TagScmResult; @@ -35,9 +41,6 @@ import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException; import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator; -import java.io.File; -import java.util.List; - /** * Tag the SCM repository after committing the release. * @@ -80,19 +83,46 @@ throw new ReleaseExecutionException( "Unable to configure SCM repository: " + e.getMessage(), e ); } - TagScmResult result; + TagScmResult result = null; try { - // TODO: want includes/excludes? - ScmFileSet fileSet = new ScmFileSet( new File( releaseDescriptor.getWorkingDirectory() ) ); - String tagName = releaseDescriptor.getScmReleaseLabel(); - result = provider.tag( repository, fileSet, tagName, - releaseDescriptor.getScmCommentPrefix() + " copy for tag " + tagName ); + if ( releaseDescriptor.isCommitByProject() ) + { + String tagName = releaseDescriptor.getScmReleaseLabel(); + // First create an empty label + provider.tag(repository, new ScmFileSet( new File( releaseDescriptor.getWorkingDirectory() ), "", "**" ), tagName, + releaseDescriptor.getScmCommentPrefix() + " copy for tag " + tagName); + + // Then tag every project underneath the empty tag we just created. + Iterator it = reactorProjects.iterator(); + while (it.hasNext()) { + MavenProject project = (MavenProject) it.next(); + System.out.println("Project: " + project.getBasedir()); + + ScmFileSet fileSet = new ScmFileSet( project.getFile().getParentFile() ); + tagName = releaseDescriptor.getScmReleaseLabel() + "/" + project.getFile().getParentFile().getName(); + repository = scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, settings ); + result = provider.tag( repository, fileSet, tagName, + releaseDescriptor.getScmCommentPrefix() + " copy for tag " + tagName ); + } + } + else + { + // TODO: want includes/excludes? + ScmFileSet fileSet = new ScmFileSet( new File( releaseDescriptor.getWorkingDirectory() ) ); + String tagName = releaseDescriptor.getScmReleaseLabel(); + result = provider.tag( repository, fileSet, tagName, + releaseDescriptor.getScmCommentPrefix() + " copy for tag " + tagName ); + } } catch ( ScmException e ) { throw new ReleaseExecutionException( "An error is occurred in the tag process: " + e.getMessage(), e ); } + catch ( IOException e ) + { + throw new ReleaseExecutionException( "An error is occurred in the tag process: " + e.getMessage(), e ); + } if ( !result.isSuccess() ) { Index: src/main/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhase.java =================================================================== --- src/main/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhase.java (revision 659511) +++ src/main/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhase.java (working copy) @@ -64,7 +64,16 @@ additionalArguments = "-f pom.xml"; } - return execute( releaseDescriptor, new File( releaseDescriptor.getCheckoutDirectory() ), additionalArguments ); + File workingDirectory = new File( releaseDescriptor.getCheckoutDirectory() ); + + if ( releaseDescriptor.isCommitByProject() ) + { + String buildName = workingDirectory.getParentFile().getParentFile().getName(); + + workingDirectory = new File ( releaseDescriptor.getCheckoutDirectory(), buildName ); + } + + return execute( releaseDescriptor, workingDirectory, additionalArguments ); } public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects ) Index: pom.xml =================================================================== --- pom.xml (revision 659511) +++ pom.xml (working copy) @@ -26,7 +26,7 @@ 4 maven-release-manager - 1.0-alpha-4 + 1.1-SNAPSHOT 2.0.1