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 
&lt;distributionManagement&gt;/&lt;site&gt; 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 &lt;distributionManagement&gt;/&lt;site&gt; 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 
&lt;distributionManagement&gt;/&lt;site&gt; 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 );
     }
 


Reply via email to