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