Author: mfriedenhagen
Date: Fri Apr 10 19:53:48 2015
New Revision: 1672738
URL: http://svn.apache.org/r1672738
Log:
MRELEASE-901: Goal stage should take parameter localCheckout as well.
This commit moves most of the logic from StageReleaseMojo to PerformReleaseMojo.
Modified:
maven/release/trunk/maven-release-plugin/src/it/projects/update-versions/MRELEASE-611/verify.groovy
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/StageReleaseMojo.java
maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/StageReleaseMojoTest.java
Modified:
maven/release/trunk/maven-release-plugin/src/it/projects/update-versions/MRELEASE-611/verify.groovy
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/it/projects/update-versions/MRELEASE-611/verify.groovy?rev=1672738&r1=1672737&r2=1672738&view=diff
==============================================================================
---
maven/release/trunk/maven-release-plugin/src/it/projects/update-versions/MRELEASE-611/verify.groovy
(original)
+++
maven/release/trunk/maven-release-plugin/src/it/projects/update-versions/MRELEASE-611/verify.groovy
Fri Apr 10 19:53:48 2015
@@ -21,7 +21,7 @@
File buildLog = new File( basedir, 'build.log' )
assert buildLog.exists()
-def projectRoot = new XmlSlurper().parse( new File( basedir, pom.xml" ) )
+def projectRoot = new XmlSlurper().parse( new File( basedir, "pom.xml" ) )
assert projectRoot.version.text() == "1.1-SNAPSHOT"
Modified:
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java?rev=1672738&r1=1672737&r2=1672738&view=diff
==============================================================================
---
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
(original)
+++
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
Fri Apr 10 19:53:48 2015
@@ -50,7 +50,7 @@ public class PerformReleaseMojo
* <code>deploy site-deploy</code>, if the project has a
<distributionManagement>/<site> element.
*/
@Parameter( property = "goals" )
- private String goals;
+ protected String goals;
/**
* Comma separated profiles to enable on deployment, in addition to active
profiles for project execution.
@@ -80,7 +80,7 @@ public class PerformReleaseMojo
*
* TODO: we should think about having the defaults for the various SCM
providers provided via modello!
*
- * @since 2.0
+ * @since 2.0 for release:perform and 2.5.2 for release:stage
*/
@Parameter( defaultValue = "false", property = "localCheckout" )
private boolean localCheckout;
@@ -135,6 +135,7 @@ public class PerformReleaseMojo
try
{
+ setDeploymentRepository();
// Note that the working directory here is not the same as in the
release configuration, so don't reuse that
ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
if ( connectionUrl != null )
@@ -157,16 +158,7 @@ public class PerformReleaseMojo
releaseDescriptor.setCheckoutDirectory(
workingDirectory.getAbsolutePath() );
releaseDescriptor.setUseReleaseProfile( useReleaseProfile );
- if ( goals == null )
- {
- // set default
- goals = "deploy";
- if ( project.getDistributionManagement() != null
- && project.getDistributionManagement().getSite() != null )
- {
- goals += " site-deploy";
- }
- }
+ createGoals();
releaseDescriptor.setPerformGoals( goals );
ReleasePerformRequest performRequest = new
ReleasePerformRequest();
@@ -186,4 +178,24 @@ public class PerformReleaseMojo
throw new MojoFailureException( e.getMessage(), e );
}
}
+
+ /** Just here so it may be overridden by StageReleaseMojo */
+ protected void setDeploymentRepository()
+ {
+ }
+
+ /** Just here so it may be overridden by StageReleaseMojo */
+ protected void createGoals()
+ {
+ if ( goals == null )
+ {
+ // set default
+ goals = "deploy";
+ if ( project.getDistributionManagement() != null
+ && project.getDistributionManagement().getSite() != null )
+ {
+ goals += " site-deploy";
+ }
+ }
+ }
}
Modified:
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/StageReleaseMojo.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/StageReleaseMojo.java?rev=1672738&r1=1672737&r2=1672738&view=diff
==============================================================================
---
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/StageReleaseMojo.java
(original)
+++
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/StageReleaseMojo.java
Fri Apr 10 19:53:48 2015
@@ -32,6 +32,12 @@ import org.codehaus.plexus.util.StringUt
/**
* Perform a release from SCM to a staging repository.
+ *
+ * If no goals are given, these default to <code>deploy</code> or <code>deploy
site:stage-deploy</code>,
+ * if the project has a <distributionManagement>/<site> element.
+ *
+ * If the goals contain <code>site-deploy</code> or <code>site:deploy</code>,
these
+ * are overridden with <code>site:stage-deploy</code>.
*
* @author <a href="mailto:[email protected]">Nicolas De Loof</a>
* @version $Id$
@@ -39,51 +45,9 @@ import org.codehaus.plexus.util.StringUt
*/
@Mojo( name = "stage", aggregator = true, requiresProject = false )
public class StageReleaseMojo
- extends AbstractScmReleaseMojo
+ extends PerformReleaseMojo
{
/**
- * A comma or space separated list of goals to execute on deployment.
Default value is either <code>deploy</code> or
- * <code>deploy site-deploy</code>, if the project has a
<distributionManagement>/<site> element.
- *
- * @since 2.0-beta-8
- */
- @Parameter( property = "goals" )
- private String goals;
-
- /**
- * Comma separated profiles to enable on deployment, in addition to active
profiles for project execution.
- *
- * @since 2.0-beta-8
- */
- @Parameter( property = "releaseProfiles" )
- private String releaseProfiles;
-
- /**
- * The checkout directory.
- *
- * @since 2.0-beta-8
- */
- @Parameter( defaultValue = "${project.build.directory}/checkout", property
= "workingDirectory", required = true )
- private File workingDirectory;
-
- /**
- * The SCM URL to checkout from. If omitted, the one from the
<code>release.properties</code> file is used, followed
- * by the URL from the current POM.
- *
- * @since 2.0-beta-8
- */
- @Parameter( property = "connectionUrl" )
- private String connectionUrl;
-
- /**
- * Whether to use the release profile that adds sources and javadocs to
the released artifact, if appropriate.
- *
- * @since 2.0-beta-8
- */
- @Parameter( defaultValue = "true", property = "useReleaseProfile" )
- private boolean useReleaseProfile;
-
- /**
* URL of the staging repository to use.
*
* @since 2.0-beta-8
@@ -91,68 +55,27 @@ public class StageReleaseMojo
@Parameter( property = "stagingRepository", required = true )
private String stagingRepository;
- /**
- * {@inheritDoc}
- */
- protected String getAdditionalProfiles()
- {
- return releaseProfiles;
- }
-
- /**
- * {@inheritDoc}
- */
- public void execute()
- throws MojoExecutionException, MojoFailureException
+ @Override
+ protected void createGoals()
{
- super.execute();
-
- // goals may be splitted into multiple line in configuration.
- // Let's build a single line command
- if ( goals != null )
- {
- goals = StringUtils.join( StringUtils.split( goals ), " " );
- }
-
- try
+ if ( goals == null )
{
- addArgument( "-DaltDeploymentRepository=\"" + stagingRepository +
"\"" );
-
- // Note that the working directory here is not the same as in the
release configuration, so don't reuse that
- ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
- if ( connectionUrl != null )
+ // set default
+ goals = "deploy";
+ if ( project.getDistributionManagement() != null
+ && project.getDistributionManagement().getSite() != null )
{
- releaseDescriptor.setScmSourceUrl( connectionUrl );
+ goals += " site:stage-deploy";
}
+ }
- releaseDescriptor.setCheckoutDirectory(
workingDirectory.getAbsolutePath() );
- releaseDescriptor.setUseReleaseProfile( useReleaseProfile );
-
- if ( goals == null )
- {
- // set default
- goals = "deploy";
- if ( project.getDistributionManagement() != null
- && project.getDistributionManagement().getSite() != null )
- {
- goals += " site:stage-deploy";
- }
- }
-
- goals = StringUtils.replace( goals, "site-deploy",
"site:stage-deploy" );
- goals = StringUtils.replace( goals, "site:deploy",
"site:stage-deploy" );
-
- releaseDescriptor.setPerformGoals( goals );
+ goals = StringUtils.replace( goals, "site-deploy", "site:stage-deploy"
);
+ goals = StringUtils.replace( goals, "site:deploy", "site:stage-deploy"
);
+ }
- releaseManager.perform( releaseDescriptor,
getReleaseEnvironment(), getReactorProjects(), false );
- }
- catch ( ReleaseExecutionException e )
- {
- throw new MojoExecutionException( e.getMessage(), e );
- }
- catch ( ReleaseFailureException e )
- {
- throw new MojoFailureException( e.getMessage(), e );
- }
+ @Override
+ protected void setDeploymentRepository()
+ {
+ addArgument( "-DaltDeploymentRepository=\"" + stagingRepository + "\""
);
}
}
Modified:
maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/StageReleaseMojoTest.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/StageReleaseMojoTest.java?rev=1672738&r1=1672737&r2=1672738&view=diff
==============================================================================
---
maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/StageReleaseMojoTest.java
(original)
+++
maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/StageReleaseMojoTest.java
Fri Apr 10 19:53:48 2015
@@ -34,8 +34,10 @@ import org.apache.maven.model.Site;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.release.ReleaseManager;
+import org.apache.maven.shared.release.ReleasePerformRequest;
import org.apache.maven.shared.release.config.ReleaseDescriptor;
import org.apache.maven.shared.release.env.ReleaseEnvironment;
+import org.mockito.ArgumentCaptor;
/**
* Test release:perform.
@@ -60,12 +62,24 @@ public class StageReleaseMojoTest
releaseDescriptor.setPerformGoals( "deploy site:stage-deploy" );
releaseDescriptor.setAdditionalArguments(
"-DaltDeploymentRepository=\"staging\"" );
+ ReleasePerformRequest performRequest = new ReleasePerformRequest();
+ performRequest.setReleaseDescriptor( releaseDescriptor );
+ performRequest.setReleaseEnvironment( mojo.getReleaseEnvironment() );
+ performRequest.setReactorProjects( mojo.getReactorProjects() );
+ performRequest.setDryRun( false );
+
ReleaseManager mock = mock( ReleaseManager.class );
mojo.setReleaseManager( mock );
mojo.execute();
- verify( mock ).perform( eq( releaseDescriptor ), isA(
ReleaseEnvironment.class ), isNull( List.class ), eq( false ) );
+ // verify
+ ArgumentCaptor<ReleasePerformRequest> argument =
ArgumentCaptor.forClass(ReleasePerformRequest.class);
+ verify( mock ).perform( argument.capture() );
+ assertEquals( releaseDescriptor,
argument.getValue().getReleaseDescriptor() );
+ assertNotNull( argument.getValue().getReleaseEnvironment() );
+ assertNull( argument.getValue().getReactorProjects() );
+ assertEquals( Boolean.FALSE, argument.getValue().getDryRun() );
verifyNoMoreInteractions( mock );
}