You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2019/12/08 19:06:07 UTC
[maven-release] branch master updated: MRELEASE-980 Allow commit
comments to be controlled
This is an automated email from the ASF dual-hosted git repository.
hboutemy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-release.git
The following commit(s) were added to refs/heads/master by this push:
new afd175d MRELEASE-980 Allow commit comments to be controlled
afd175d is described below
commit afd175d0a5ddf5c99011451fa9b4e6a357e50c41
Author: Hervé Boutemy <hb...@apache.org>
AuthorDate: Sun Dec 1 13:15:58 2019 +0100
MRELEASE-980 Allow commit comments to be controlled
---
.../shared/release/config/ReleaseDescriptor.java | 34 +++++++++-
.../src/main/components-fragment.xml | 8 +--
.../config/PropertiesReleaseDescriptorStore.java | 16 +++++
.../release/config/ReleaseDescriptorBuilder.java | 36 +++++++++++
.../maven/shared/release/config/ReleaseUtils.java | 16 +++++
.../release/phase/AbstractScmCommitPhase.java | 48 ++++++++++++--
.../release/phase/ScmCommitDevelopmentPhase.java | 4 +-
.../release/phase/ScmCommitPreparationPhase.java | 17 +----
.../src/main/mdo/release-descriptor.mdo | 56 +++++++++++++++++
.../phase/ScmCommitDevelopmentPhaseTest.java | 15 +++++
.../phase/ScmCommitPreparationPhaseTest.java | 73 ++++++++++++++++++++++
.../maven/plugins/release/BranchReleaseMojo.java | 20 ++++++
.../maven/plugins/release/PrepareReleaseMojo.java | 42 +++++++++++++
.../maven/plugins/release/RollbackReleaseMojo.java | 29 ++++++++-
14 files changed, 383 insertions(+), 31 deletions(-)
diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java
index 52aecd1..a6d03c2 100644
--- a/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java
+++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java
@@ -275,6 +275,38 @@ public interface ReleaseDescriptor
String getScmCommentPrefix();
/**
+ * Get the SCM commit comment when setting pom.xml to release.
+ *
+ * @return String
+ * @since 3.0.0-M1
+ */
+ String getScmReleaseCommitComment();
+
+ /**
+ * Get the SCM commit comment when setting pom.xml back to development.
+ *
+ * @return String
+ * @since 3.0.0-M1
+ */
+ String getScmDevelopmentCommitComment();
+
+ /**
+ * Get the SCM commit comment when branching.
+ *
+ * @return String
+ * @since 3.0.0-M1
+ */
+ String getScmBranchCommitComment();
+
+ /**
+ * Get the SCM commit comment when rolling back.
+ *
+ * @return String
+ * @since 3.0.0-M1
+ */
+ String getScmRollbackCommitComment();
+
+ /**
* Get pass phrase for the private key.
*
* @return String
@@ -432,6 +464,4 @@ public interface ReleaseDescriptor
void setScmRelativePathProjectDirectory( String scmRelativePathProjectDirectory );
void setScmSourceUrl( String scmUrl );
-
-
}
diff --git a/maven-release-manager/src/main/components-fragment.xml b/maven-release-manager/src/main/components-fragment.xml
index d6a0f60..6bb0f31 100644
--- a/maven-release-manager/src/main/components-fragment.xml
+++ b/maven-release-manager/src/main/components-fragment.xml
@@ -143,7 +143,7 @@
</requirement>
</requirements>
<configuration>
- <messageFormat>prepare release {0}</messageFormat>
+ <descriptorCommentGetter>getScmReleaseCommitComment</descriptorCommentGetter>
</configuration>
</component>
<component>
@@ -156,7 +156,7 @@
</requirement>
</requirements>
<configuration>
- <messageFormat>prepare for next development iteration</messageFormat>
+ <descriptorCommentGetter>getScmDevelopmentCommitComment</descriptorCommentGetter>
<rollbackMessageFormat>rollback changes from release preparation of {0}</rollbackMessageFormat>
</configuration>
</component>
@@ -170,7 +170,7 @@
</requirement>
</requirements>
<configuration>
- <messageFormat>prepare branch {0}</messageFormat>
+ <descriptorCommentGetter>getScmBranchCommitComment</descriptorCommentGetter>
</configuration>
</component>
<component>
@@ -183,7 +183,7 @@
</requirement>
</requirements>
<configuration>
- <messageFormat>rollback the release of {0}</messageFormat>
+ <descriptorCommentGetter>getScmRollbackCommitComment</descriptorCommentGetter>
</configuration>
</component>
<component>
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
index 9841e70..262b21d 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
@@ -194,6 +194,22 @@ public class PropertiesReleaseDescriptorStore
{
properties.setProperty( "scm.commentPrefix", config.getScmCommentPrefix() );
}
+ if ( config.getScmDevelopmentCommitComment() != null )
+ {
+ properties.setProperty( "scm.developmentCommitComment", config.getScmDevelopmentCommitComment() );
+ }
+ if ( config.getScmReleaseCommitComment() != null )
+ {
+ properties.setProperty( "scm.releaseCommitComment", config.getScmReleaseCommitComment() );
+ }
+ if ( config.getScmBranchCommitComment() != null )
+ {
+ properties.setProperty( "scm.branchCommitComment", config.getScmBranchCommitComment() );
+ }
+ if ( config.getScmRollbackCommitComment() != null )
+ {
+ properties.setProperty( "scm.rollbackCommitComment", config.getScmRollbackCommitComment() );
+ }
if ( config.getAdditionalArguments() != null )
{
properties.setProperty( "exec.additionalArguments", config.getAdditionalArguments() );
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
index 68a6a8e..745dc4d 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
@@ -236,6 +236,42 @@ public class ReleaseDescriptorBuilder
return this;
}
+ /**
+ * @since 3.0.0-M1
+ */
+ public ReleaseDescriptorBuilder setScmReleaseCommitComment( String scmReleaseCommitComment )
+ {
+ releaseDescriptor.setScmReleaseCommitComment( scmReleaseCommitComment );
+ return this;
+ }
+
+ /**
+ * @since 3.0.0-M1
+ */
+ public ReleaseDescriptorBuilder setScmDevelopmentCommitComment( String scmDevelopmentCommitComment )
+ {
+ releaseDescriptor.setScmDevelopmentCommitComment( scmDevelopmentCommitComment );
+ return this;
+ }
+
+ /**
+ * @since 3.0.0-M1
+ */
+ public ReleaseDescriptorBuilder setScmBranchCommitComment( String scmBranchCommitComment )
+ {
+ releaseDescriptor.setScmBranchCommitComment( scmBranchCommitComment );
+ return this;
+ }
+
+ /**
+ * @since 3.0.0-M1
+ */
+ public ReleaseDescriptorBuilder setScmRollbackCommitComment( String scmRollbackCommitComment )
+ {
+ releaseDescriptor.setScmRollbackCommitComment( scmRollbackCommitComment );
+ return this;
+ }
+
public ReleaseDescriptorBuilder setScmId( String scmId )
{
releaseDescriptor.setScmId( scmId );
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
index 9200ee2..bc48cc5 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
@@ -103,6 +103,22 @@ public class ReleaseUtils
{
builder.setScmCommentPrefix( properties.getProperty( "scm.commentPrefix" ) );
}
+ if ( properties.containsKey( "scm.developmentCommitComment" ) )
+ {
+ builder.setScmDevelopmentCommitComment( properties.getProperty( "scm.developmentCommitComment" ) );
+ }
+ if ( properties.containsKey( "scm.releaseCommitComment" ) )
+ {
+ builder.setScmReleaseCommitComment( properties.getProperty( "scm.releaseCommitComment" ) );
+ }
+ if ( properties.containsKey( "scm.branchCommitComment" ) )
+ {
+ builder.setScmBranchCommitComment( properties.getProperty( "scm.branchCommitComment" ) );
+ }
+ if ( properties.containsKey( "scm.rollbackCommitComment" ) )
+ {
+ builder.setScmRollbackCommitComment( properties.getProperty( "scm.rollbackCommitComment" ) );
+ }
if ( properties.containsKey( "exec.additionalArguments" ) )
{
builder.setAdditionalArguments( properties.getProperty( "exec.additionalArguments" ) );
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java
index 3269da2..3ae72ac 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java
@@ -39,7 +39,6 @@ import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
import org.apache.maven.shared.release.util.ReleaseUtil;
import java.io.File;
-import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -63,9 +62,9 @@ public abstract class AbstractScmCommitPhase
protected ScmRepositoryConfigurator scmRepositoryConfigurator;
/**
- * The format for the commit message.
+ * The getter in the descriptor for the comment.
*/
- protected String messageFormat;
+ protected String descriptorCommentGetter;
@Override
public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
@@ -190,10 +189,47 @@ public abstract class AbstractScmCommitPhase
}
}
- protected String createMessage( ReleaseDescriptor releaseDescriptor )
+ protected String createMessage( List<MavenProject> reactorProjects,
+ ReleaseDescriptor releaseDescriptor )
+ throws ReleaseExecutionException
{
- return MessageFormat.format( releaseDescriptor.getScmCommentPrefix() + messageFormat,
- new Object[]{releaseDescriptor.getScmReleaseLabel()} );
+ String comment;
+ boolean branch = false;
+ if ( "getScmReleaseCommitComment".equals( descriptorCommentGetter ) )
+ {
+ comment = releaseDescriptor.getScmReleaseCommitComment();
+ }
+ else if ( "getScmDevelopmentCommitComment".equals( descriptorCommentGetter ) )
+ {
+ comment = releaseDescriptor.getScmDevelopmentCommitComment();
+ }
+ else if ( "getScmBranchCommitComment".equals( descriptorCommentGetter ) )
+ {
+ comment = releaseDescriptor.getScmBranchCommitComment();
+ branch = true;
+ }
+ else if ( "getScmRollbackCommitComment".equals( descriptorCommentGetter ) )
+ {
+ comment = releaseDescriptor.getScmRollbackCommitComment();
+ }
+ else
+ {
+ throw new ReleaseExecutionException( "Invalid configuration in components-fragment.xml" );
+ }
+
+ MavenProject project = ReleaseUtil.getRootProject( reactorProjects );
+ comment = comment.replace( "@{prefix}", releaseDescriptor.getScmCommentPrefix().trim() );
+ comment = comment.replace( "@{groupId}", project.getGroupId() );
+ comment = comment.replace( "@{artifactId}", project.getArtifactId() );
+ if ( branch )
+ {
+ comment = comment.replace( "@{branchName}", releaseDescriptor.getScmReleaseLabel() );
+ }
+ else
+ {
+ comment = comment.replace( "@{releaseLabel}", releaseDescriptor.getScmReleaseLabel() );
+ }
+ return comment;
}
protected static List<File> createPomFiles( ReleaseDescriptor releaseDescriptor, MavenProject project )
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhase.java
index 5e81186..c81889e 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhase.java
@@ -79,13 +79,13 @@ public class ScmCommitDevelopmentPhase
else
{
// a normal commit
- message = createMessage( releaseDescriptor );
+ message = createMessage( reactorProjects, releaseDescriptor );
}
if ( simulating )
{
Collection<File> pomFiles = createPomFiles( releaseDescriptor, reactorProjects );
logInfo( result,
- "Full run would be commit " + pomFiles.size() + " files with message: '" + message + "'" );
+ "Full run would commit " + pomFiles.size() + " files with message: '" + message + "'" );
}
else
{
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhase.java
index 2e8d776..1bee2fb 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhase.java
@@ -28,7 +28,6 @@ import org.apache.maven.shared.release.env.ReleaseEnvironment;
import org.apache.maven.shared.release.scm.ReleaseScmCommandException;
import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
-import java.text.MessageFormat;
import java.util.List;
/**
@@ -40,12 +39,6 @@ public class ScmCommitPreparationPhase
extends AbstractScmCommitPhase
{
- /**
- * The format for the
- */
- private String rollbackMessageFormat;
-
- @Override
protected void runLogic( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
List<MavenProject> reactorProjects, ReleaseResult result, boolean simulating )
throws ReleaseScmCommandException, ReleaseExecutionException, ReleaseScmRepositoryException
@@ -66,8 +59,7 @@ public class ScmCommitPreparationPhase
// commit development versions required
else
{
- String message = createMessage( releaseDescriptor );
-
+ String message = createMessage( reactorProjects, releaseDescriptor );
if ( simulating )
{
simulateCheckins( releaseDescriptor, reactorProjects, result, message );
@@ -79,13 +71,6 @@ public class ScmCommitPreparationPhase
}
}
- private String createRollbackMessage( ReleaseDescriptor releaseDescriptor )
- {
- return MessageFormat.format( releaseDescriptor.getScmCommentPrefix() + rollbackMessageFormat,
- new Object[]{releaseDescriptor.getScmReleaseLabel()} );
- }
-
- @Override
protected void validateConfiguration( ReleaseDescriptor releaseDescriptor )
throws ReleaseFailureException
{
diff --git a/maven-release-manager/src/main/mdo/release-descriptor.mdo b/maven-release-manager/src/main/mdo/release-descriptor.mdo
index fe41833..b63c4b4 100644
--- a/maven-release-manager/src/main/mdo/release-descriptor.mdo
+++ b/maven-release-manager/src/main/mdo/release-descriptor.mdo
@@ -69,6 +69,42 @@
</description>
</field>
<field>
+ <name>scmReleaseCommitComment</name>
+ <version>3.0.0+</version>
+ <type>String</type>
+ <defaultValue>@{prefix} prepare release @{releaseLabel}</defaultValue>
+ <description>
+ The SCM commit comment when setting pom.xml to release
+ </description>
+ </field>
+ <field>
+ <name>scmDevelopmentCommitComment</name>
+ <version>3.0.0+</version>
+ <type>String</type>
+ <defaultValue>@{prefix} prepare for next development iteration</defaultValue>
+ <description>
+ The SCM commit comment when setting pom.xml back to development
+ </description>
+ </field>
+ <field>
+ <name>scmBranchCommitComment</name>
+ <version>3.0.0+</version>
+ <type>String</type>
+ <defaultValue>@{prefix} prepare branch @{releaseLabel}</defaultValue>
+ <description>
+ The SCM commit comment when branching
+ </description>
+ </field>
+ <field>
+ <name>scmRollbackCommitComment</name>
+ <version>3.0.0+</version>
+ <type>String</type>
+ <defaultValue>@{prefix} rollback the release of @{releaseLabel}</defaultValue>
+ <description>
+ The SCM commit comment when rolling back
+ </description>
+ </field>
+ <field>
<name>scmSourceUrl</name>
<version>1.0.0+</version>
<type>String</type>
@@ -829,6 +865,22 @@
{
return false;
}
+ if ( !java.util.Objects.equals( scmDevelopmentCommitComment, that.getScmDevelopmentCommitComment() ) )
+ {
+ return false;
+ }
+ if ( !java.util.Objects.equals( scmReleaseCommitComment, that.getScmReleaseCommitComment() ) )
+ {
+ return false;
+ }
+ if ( !java.util.Objects.equals( scmBranchCommitComment, that.getScmBranchCommitComment() ) )
+ {
+ return false;
+ }
+ if ( !java.util.Objects.equals( scmRollbackCommitComment, that.getScmRollbackCommitComment() ) )
+ {
+ return false;
+ }
if ( !java.util.Objects.equals( scmPrivateKeyPassPhrase, that.getScmPrivateKeyPassPhrase() ) )
{
return false;
@@ -962,6 +1014,10 @@
result = 29 * result + java.util.Objects.hashCode( completionGoals );
result = 29 * result + java.util.Objects.hashCode( pomFileName );
result = 29 * result + java.util.Objects.hashCode( checkModificationExcludes );
+ result = 29 * result + java.util.Objects.hashCode( scmDevelopmentCommitComment );
+ result = 29 * result + java.util.Objects.hashCode( scmReleaseCommitComment );
+ result = 29 * result + java.util.Objects.hashCode( scmBranchCommitComment );
+ result = 29 * result + java.util.Objects.hashCode( scmRollbackCommitComment );
result = 29 * result + java.util.Objects.hashCode( scmTagBase );
result = 29 * result + java.util.Objects.hashCode( scmBranchBase );
result = 29 * result + java.util.Objects.hashCode( scmUsername );
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhaseTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhaseTest.java
index 41c90f3..50ba849 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhaseTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhaseTest.java
@@ -120,6 +120,21 @@ public class ScmCommitDevelopmentPhaseTest
}
@Test
+ public void testCommitsNextVersionsAlternateMessage()
+ throws Exception
+ {
+ builder.setUpdateWorkingCopyVersions( true );
+ builder.setScmCommentPrefix("[release]");
+ builder.setScmDevelopmentCommitComment("@{prefix} Development of @{groupId}:@{artifactId}");
+
+ prepareCheckin( "[release] Development of groupId:artifactId" );
+
+ phase.execute( ReleaseUtils.buildReleaseDescriptor( builder ), new DefaultReleaseEnvironment(), reactorProjects );
+
+ verifyCheckin( "[release] Development of groupId:artifactId" );
+ }
+
+ @Test
public void testCommitsRollbackPrepare()
throws Exception
{
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java
index 54c1860..863cdbd 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java
@@ -129,6 +129,41 @@ public class ScmCommitPreparationPhaseTest
}
@Test
+ public void testCommitAlternateMessage()
+ throws Exception
+ {
+ // prepare
+ List<MavenProject> reactorProjects = createReactorProjects();
+ ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder();
+ builder.setScmSourceUrl( "scm-url" );
+ builder.setScmCommentPrefix("[release]");
+ builder.setScmReleaseCommitComment("@{prefix} Release of @{groupId}:@{artifactId} @{releaseLabel}");
+ MavenProject rootProject = ReleaseUtil.getRootProject( reactorProjects );
+ builder.setWorkingDirectory( rootProject.getFile().getParentFile().getAbsolutePath() );
+ builder.setScmReleaseLabel( "release-label" );
+
+ ScmFileSet fileSet = new ScmFileSet( rootProject.getFile().getParentFile(), rootProject.getFile() );
+
+ ScmProvider scmProviderMock = mock( ScmProvider.class );
+ when( scmProviderMock.checkIn( isA( ScmRepository.class ), argThat( new IsScmFileSetEquals( fileSet ) ),
+ isNull( ScmVersion.class ),
+ eq( "[release] Release of groupId:artifactId release-label" ) ) ).thenReturn( new CheckInScmResult( "...",
+ Collections.singletonList( new ScmFile( rootProject.getFile().getPath(),
+ ScmFileStatus.CHECKED_IN ) ) ) );
+
+ ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
+ stub.setScmProvider( scmProviderMock );
+
+ // execute
+ phase.execute( ReleaseUtils.buildReleaseDescriptor( builder ), new DefaultReleaseEnvironment(), reactorProjects );
+
+ // verify
+ verify( scmProviderMock ).checkIn( isA( ScmRepository.class ), argThat( new IsScmFileSetEquals( fileSet ) ),
+ isNull( ScmVersion.class ), eq( "[release] Release of groupId:artifactId release-label" ) );
+ verifyNoMoreInteractions( scmProviderMock );
+ }
+
+ @Test
public void testCommitMultiModule()
throws Exception
{
@@ -205,6 +240,44 @@ public class ScmCommitPreparationPhaseTest
}
@Test
+ public void testCommitDevelopmentAlternateMessage()
+ throws Exception
+ {
+ // prepare
+ phase = (ReleasePhase) lookup( ReleasePhase.class, "scm-commit-development" );
+
+ ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder();
+ List<MavenProject> reactorProjects = createReactorProjects();
+ builder.setScmSourceUrl( "scm-url" );
+ builder.setScmCommentPrefix("[release]");
+ builder.setScmDevelopmentCommitComment("@{prefix} Bump version of @{groupId}:@{artifactId} after @{releaseLabel}");
+ MavenProject rootProject = ReleaseUtil.getRootProject( reactorProjects );
+ builder.setWorkingDirectory( rootProject.getFile().getParentFile().getAbsolutePath() );
+ builder.setScmReleaseLabel( "release-label" );
+
+ ScmFileSet fileSet = new ScmFileSet( rootProject.getFile().getParentFile(), rootProject.getFile() );
+
+ ScmProvider scmProviderMock = mock( ScmProvider.class );
+ when( scmProviderMock.checkIn( isA( ScmRepository.class ), argThat( new IsScmFileSetEquals( fileSet ) ),
+ isNull( ScmVersion.class ),
+ eq( "[release] Bump version of groupId:artifactId after release-label" ) ) ).thenReturn( new CheckInScmResult( "...",
+ Collections.singletonList( new ScmFile( rootProject.getFile().getPath(),
+ ScmFileStatus.CHECKED_IN ) ) ) );
+
+ ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
+ stub.setScmProvider( scmProviderMock );
+
+ // execute
+ phase.execute( ReleaseUtils.buildReleaseDescriptor( builder ), new DefaultReleaseEnvironment(), reactorProjects );
+
+ // verify
+ verify( scmProviderMock ).checkIn( isA( ScmRepository.class ), argThat( new IsScmFileSetEquals( fileSet ) ),
+ isNull( ScmVersion.class ),
+ eq( "[release] Bump version of groupId:artifactId after release-label" ) );
+ verifyNoMoreInteractions( scmProviderMock );
+ }
+
+ @Test
public void testCommitNoReleaseLabel()
throws Exception
{
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java
index 029f6a0..1cbd467 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java
@@ -211,6 +211,25 @@ public class BranchReleaseMojo
@Parameter( property = "projectNamingPolicyId" )
private String projectBranchNamingPolicyId;
+ /**
+ * The SCM commit comment when branching.
+ * Defaults to "@{prefix} prepare branch @{releaseLabel}".
+ * <p>
+ * Property interpolation is performed on the value, but in order to ensure that the interpolation occurs
+ * during release, you must use <code>@{...}</code> to reference the properties rather than <code>${...}</code>.
+ * The following properties are available:
+ * <ul>
+ * <li><code>prefix</code> - The comment prefix.
+ * <li><code>groupId</code> - The groupId of the root project.
+ * <li><code>artifactId</code> - The artifactId of the root project.
+ * <li><code>releaseLabel</code> - The release version of the root project.
+ * </ul>
+ *
+ * @since 3.0.0-M1
+ */
+ @Parameter( defaultValue = "@{prefix} prepare branch @{releaseLabel}", property = "scmBranchCommitComment" )
+ private String scmBranchCommitComment = "@{prefix} prepare branch @{releaseLabel}";
+
@Override
public void execute()
throws MojoExecutionException, MojoFailureException
@@ -234,6 +253,7 @@ public class BranchReleaseMojo
config.setSuppressCommitBeforeTagOrBranch( suppressCommitBeforeBranch );
config.setProjectVersionPolicyId( projectVersionPolicyId );
config.setProjectNamingPolicyId( projectBranchNamingPolicyId );
+ config.setScmBranchCommitComment( scmBranchCommitComment );
if ( checkModificationExcludeList != null )
{
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
index 0d9690f..1c3e057 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
@@ -240,6 +240,46 @@ public class PrepareReleaseMojo
@Parameter( property = "projectNamingPolicyId" )
private String projectTagNamingPolicyId;
+ /**
+ * The SCM commit comment when setting pom.xml to release.
+ * Defaults to "@{prefix} prepare release @{releaseLabel}".
+ * <p>
+ * Property interpolation is performed on the value, but in order to ensure that the interpolation occurs
+ * during release, you must use <code>@{...}</code> to reference the properties rather than <code>${...}</code>.
+ * The following properties are available:
+ * <ul>
+ * <li><code>prefix</code> - The comment prefix.
+ * <li><code>groupId</code> - The groupId of the root project.
+ * <li><code>artifactId</code> - The artifactId of the root project.
+ * <li><code>releaseLabel</code> - The release version of the root project.
+ * </ul>
+ *
+ * @since 3.0.0
+ */
+ @Parameter( defaultValue = "@{prefix} prepare release @{releaseLabel}", property = "scmReleaseCommitComment" )
+ private String scmReleaseCommitComment = "@{prefix} prepare release @{releaseLabel}";
+
+ /**
+ * The SCM commit comment when setting pom.xml back to development.
+ * Defaults to "@{prefix} prepare for next development iteration".
+ * <p>
+ * Property interpolation is performed on the value, but in order to ensure that the interpolation occurs
+ * during release, you must use <code>@{...}</code> to reference the properties rather than <code>${...}</code>.
+ * The following properties are available:
+ * <ul>
+ * <li><code>prefix</code> - The comment prefix.
+ * <li><code>groupId</code> - The groupId of the root project.
+ * <li><code>artifactId</code> - The artifactId of the root project.
+ * <li><code>releaseLabel</code> - The release version of the root project.
+ * </ul>
+ *
+ * @since 3.0.0
+ */
+ @Parameter(
+ defaultValue = "@{prefix} prepare for next development iteration",
+ property = "scmDevelopmentCommitComment" )
+ private String scmDevelopmentCommitComment = "@{prefix} prepare for next development iteration";
+
@Override
public void execute()
throws MojoExecutionException, MojoFailureException
@@ -279,6 +319,8 @@ public class PrepareReleaseMojo
config.setWaitBeforeTagging( waitBeforeTagging );
config.setProjectVersionPolicyId( projectVersionPolicyId );
config.setProjectNamingPolicyId( projectTagNamingPolicyId );
+ config.setScmDevelopmentCommitComment( scmDevelopmentCommitComment );
+ config.setScmReleaseCommitComment( scmReleaseCommitComment );
if ( checkModificationExcludeList != null )
{
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/RollbackReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/RollbackReleaseMojo.java
index 4d2fcf5..11778c6 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/RollbackReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/RollbackReleaseMojo.java
@@ -22,10 +22,12 @@ package org.apache.maven.plugins.release;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.shared.release.DefaultReleaseManagerListener;
import org.apache.maven.shared.release.ReleaseExecutionException;
import org.apache.maven.shared.release.ReleaseFailureException;
import org.apache.maven.shared.release.ReleaseRollbackRequest;
+import org.apache.maven.shared.release.config.ReleaseDescriptorBuilder;
/**
* Rollback changes made by a previous release. This requires that the previous release descriptor
@@ -41,16 +43,41 @@ import org.apache.maven.shared.release.ReleaseRollbackRequest;
public class RollbackReleaseMojo
extends AbstractScmReleaseMojo
{
+
+ /**
+ * The SCM commit comment when rolling back.
+ * Defaults to "@{prefix} rollback the release of @{releaseLabel}".
+ * <p>
+ * Property interpolation is performed on the value, but in order to ensure that the interpolation occurs
+ * during release, you must use <code>@{...}</code> to reference the properties rather than <code>${...}</code>.
+ * The following properties are available:
+ * <ul>
+ * <li><code>prefix</code> - The comment prefix.
+ * <li><code>groupId</code> - The groupId of the root project.
+ * <li><code>artifactId</code> - The artifactId of the root project.
+ * <li><code>releaseLabel</code> - The release version of the root project.
+ * </ul>
+ *
+ * @since 3.0.0
+ */
+ @Parameter(
+ defaultValue = "@{prefix} rollback the release of @{releaseLabel}",
+ property = "scmRollbackCommitComment" )
+ private String scmRollbackCommitComment = "@{prefix} rollback the release of @{releaseLabel}";
+
@Override
public void execute()
throws MojoExecutionException, MojoFailureException
{
super.execute();
+ final ReleaseDescriptorBuilder config = createReleaseDescriptor();
+ config.setScmRollbackCommitComment( scmRollbackCommitComment );
+
try
{
ReleaseRollbackRequest rollbackRequest = new ReleaseRollbackRequest();
- rollbackRequest.setReleaseDescriptorBuilder( createReleaseDescriptor() );
+ rollbackRequest.setReleaseDescriptorBuilder( config );
rollbackRequest.setReleaseEnvironment( getReleaseEnvironment() );
rollbackRequest.setReactorProjects( getReactorProjects() );
rollbackRequest.setReleaseManagerListener( new DefaultReleaseManagerListener( getLog() ) );