You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ev...@apache.org on 2007/05/01 22:56:17 UTC

svn commit: r534241 - in /maven/release/trunk: maven-release-manager/src/main/java/org/apache/maven/shared/release/ maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ maven-release-manager/src/main/java/org/apache/maven/shared/...

Author: evenisse
Date: Tue May  1 13:56:16 2007
New Revision: 534241

URL: http://svn.apache.org/viewvc?view=rev&rev=534241
Log:
Implements the perform process with phases 

Added:
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java   (with props)
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckCompletedPreparePhasesPhase.java   (with props)
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java   (with props)
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhase.java   (with props)
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunPrepareGoalsPhase.java
      - copied, changed from r533989, maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunGoalsPhase.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.java   (with props)
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunPrepareGoalsPhaseTest.java
      - copied, changed from r533989, maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunGoalsPhaseTest.java
    maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.xml   (with props)
    maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/RunPrepareGoalsPhaseTest.xml
      - copied unchanged from r533989, maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/RunGoalsPhaseTest.xml
Removed:
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunGoalsPhase.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunGoalsPhaseTest.java
    maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/RunGoalsPhaseTest.xml
Modified:
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractReleasePhase.java
    maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
    maven/release/trunk/maven-release-manager/src/main/resources/META-INF/plexus/components.xml
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java
    maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/DefaultReleaseManagerTest.xml
    maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java
    maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
    maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/CleanReleaseMojoTest.java
    maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PerformReleaseMojoTest.java

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java?view=diff&rev=534241&r1=534240&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java Tue May  1 13:56:16 2007
@@ -19,30 +19,16 @@
  * under the License.
  */
 
-import org.apache.maven.scm.ScmException;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmTag;
-import org.apache.maven.scm.command.checkout.CheckOutScmResult;
-import org.apache.maven.scm.manager.NoSuchScmProviderException;
-import org.apache.maven.scm.provider.ScmProvider;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.maven.scm.repository.ScmRepositoryException;
 import org.apache.maven.settings.Settings;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
 import org.apache.maven.shared.release.config.ReleaseDescriptorStore;
 import org.apache.maven.shared.release.config.ReleaseDescriptorStoreException;
-import org.apache.maven.shared.release.exec.MavenExecutor;
-import org.apache.maven.shared.release.exec.MavenExecutorException;
 import org.apache.maven.shared.release.phase.ReleasePhase;
-import org.apache.maven.shared.release.scm.ReleaseScmCommandException;
-import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
 import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
@@ -63,7 +49,9 @@
      */
     private List preparePhases;
 
-    //todo implement
+    /**
+     * The phases of release to run to perform.
+     */
     private List performPhases;
 
     /**
@@ -86,11 +74,6 @@
      */
     private ScmRepositoryConfigurator scmRepositoryConfigurator;
 
-    /**
-     * Tool to execute Maven.
-     */
-    private MavenExecutor mavenExecutor;
-
     private static final int PHASE_SKIP = 0, PHASE_START = 1, PHASE_END = 2, GOAL_START = 11, GOAL_END = 12, ERROR = 99;
 
     public void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
@@ -262,29 +245,25 @@
         }
 
         //call release:clean so that resume will not be possible anymore after a rollback
-        clean( releaseDescriptor, reactorProjects );
+        clean( releaseDescriptor, listener, reactorProjects );
         updateListener( listener, "prepare", GOAL_END );
     }
 
-    public void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects,
-                         File checkoutDirectory, String goals, boolean useReleaseProfile )
+    public void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
         throws ReleaseExecutionException, ReleaseFailureException
     {
-        perform( releaseDescriptor, settings, reactorProjects, checkoutDirectory, goals, useReleaseProfile, null );
+        perform( releaseDescriptor, settings, reactorProjects, null );
     }
 
     public void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects,
-                         File checkoutDirectory, String goals, boolean useReleaseProfile,
                          ReleaseManagerListener listener )
         throws ReleaseExecutionException, ReleaseFailureException
     {
-        perform( releaseDescriptor, settings, reactorProjects, checkoutDirectory, goals, useReleaseProfile, listener,
-                 new ReleaseResult() );
+        perform( releaseDescriptor, settings, reactorProjects, listener, new ReleaseResult() );
     }
 
     public ReleaseResult performWithResult( ReleaseDescriptor releaseDescriptor, Settings settings,
-                                            List reactorProjects, File checkoutDirectory, String goals,
-                                            boolean useReleaseProfile, ReleaseManagerListener listener )
+                                            List reactorProjects, ReleaseManagerListener listener )
     {
         ReleaseResult result = new ReleaseResult();
 
@@ -292,8 +271,7 @@
         {
             result.setStartTime( System.currentTimeMillis() );
 
-            perform( releaseDescriptor, settings, reactorProjects, checkoutDirectory, goals, useReleaseProfile,
-                     listener, result );
+            perform( releaseDescriptor, settings, reactorProjects, listener, result );
 
             result.setResultCode( ReleaseResult.SUCCESS );
         }
@@ -314,138 +292,31 @@
     }
 
     private void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects,
-                          File checkoutDirectory, String goals, boolean useReleaseProfile,
                           ReleaseManagerListener listener, ReleaseResult result )
         throws ReleaseExecutionException, ReleaseFailureException
     {
         updateListener( listener, "perform", GOAL_START );
 
-        logInfo( result, "Checking out the project to perform the release ..." );
-
-        ReleaseDescriptor config = loadReleaseDescriptor( releaseDescriptor, listener );
-
-        updateListener( listener, "verify-completed-prepare-phases", PHASE_START );
-
-        // if we stopped mid-way through preparation - don't perform
-        if ( config.getCompletedPhase() != null && !"end-release".equals( config.getCompletedPhase() ) )
-        {
-            String message = "Cannot perform release - the preparation step was stopped mid-way. Please re-run " +
-                "release:prepare to continue, or perform the release from an SCM tag.";
-
-            updateListener( listener, message, ERROR );
+        releaseDescriptor = loadReleaseDescriptor( releaseDescriptor, listener );
 
-            throw new ReleaseFailureException( message );
-        }
-
-        if ( config.getScmSourceUrl() == null )
-        {
-            String message = "No SCM URL was provided to perform the release from";
-
-            updateListener( listener, message, ERROR );
-
-            throw new ReleaseFailureException( message );
-        }
-
-        updateListener( listener, "verify-completed-prepare-phases", PHASE_END );
-
-        updateListener( listener, "configure-repositories", PHASE_START );
-
-        ScmRepository repository;
-        ScmProvider provider;
-        try
+        for ( Iterator phases = performPhases.iterator(); phases.hasNext(); )
         {
-            repository = scmRepositoryConfigurator.getConfiguredRepository( config, settings );
-
-            provider = scmRepositoryConfigurator.getRepositoryProvider( repository );
-        }
-        catch ( ScmRepositoryException e )
-        {
-            updateListener( listener, e.getMessage(), ERROR );
-
-            throw new ReleaseScmRepositoryException( e.getMessage(), e.getValidationMessages() );
-        }
-        catch ( NoSuchScmProviderException e )
-        {
-            updateListener( listener, e.getMessage(), ERROR );
-
-            throw new ReleaseExecutionException( "Unable to configure SCM repository: " + e.getMessage(), e );
-        }
-
-        // TODO: sanity check that it is not . or .. or lower
-
-        updateListener( listener, "configure-repositories", PHASE_END );
-        updateListener( listener, "checkout-project-from-scm", PHASE_START );
-
-        if ( checkoutDirectory.exists() )
-        {
-            try
-            {
-                FileUtils.deleteDirectory( checkoutDirectory );
-            }
-            catch ( IOException e )
-            {
-                updateListener( listener, e.getMessage(), ERROR );
-
-                throw new ReleaseExecutionException( "Unable to remove old checkout directory: " + e.getMessage(), e );
-            }
-        }
-        checkoutDirectory.mkdirs();
-
-        CheckOutScmResult scmResult;
-        try
-        {
-            scmResult = provider.checkOut( repository, new ScmFileSet( checkoutDirectory ),
-                                           new ScmTag( config.getScmReleaseLabel() ) );
-        }
-        catch ( ScmException e )
-        {
-            updateListener( listener, e.getMessage(), ERROR );
-
-            throw new ReleaseExecutionException( "An error is occurred in the checkout process: " + e.getMessage(), e );
-        }
-        if ( !scmResult.isSuccess() )
-        {
-            updateListener( listener, scmResult.getProviderMessage(), ERROR );
-
-            throw new ReleaseScmCommandException( "Unable to checkout from SCM", scmResult );
-        }
-
-        updateListener( listener, "checkout-project-from-scm", PHASE_END );
-        updateListener( listener, "build-project", PHASE_START );
+            String name = (String) phases.next();
 
-        String additionalArguments = config.getAdditionalArguments();
+            ReleasePhase phase = (ReleasePhase) releasePhases.get( name );
 
-        if ( useReleaseProfile )
-        {
-            if ( !StringUtils.isEmpty( additionalArguments ) )
-            {
-                additionalArguments = additionalArguments + " -DperformRelease=true";
-            }
-            else
+            if ( phase == null )
             {
-                additionalArguments = "-DperformRelease=true";
+                throw new ReleaseExecutionException( "Unable to find phase '" + name + "' to execute" );
             }
-        }
-
-        try
-        {
-            File workingDirectory =
-                determineWorkingDirectory( checkoutDirectory, scmResult.getRelativePathProjectDirectory() );
-            mavenExecutor.executeGoals( workingDirectory, goals, config.isInteractive(), additionalArguments,
-                                        config.getPomFileName(), result );
-        }
-        catch ( MavenExecutorException e )
-        {
-            updateListener( listener, e.getMessage(), ERROR );
 
-            throw new ReleaseExecutionException( "Error executing Maven: " + e.getMessage(), e );
+            updateListener( listener, name, PHASE_START );
+            phase.execute( releaseDescriptor, settings, reactorProjects );
+            updateListener( listener, name, PHASE_END );
         }
 
-        updateListener( listener, "build-project", PHASE_END );
-
-        updateListener( listener, "cleanup", PHASE_START );
-        clean( config, reactorProjects );
-        updateListener( listener, "cleanup", PHASE_END );
+        //call release:clean so that resume will not be possible anymore after a perform
+        clean( releaseDescriptor, listener, reactorProjects );
 
         updateListener( listener, "perform", GOAL_END );
     }
@@ -491,8 +362,10 @@
         }
     }
 
-    public void clean( ReleaseDescriptor releaseDescriptor, List reactorProjects )
+    public void clean( ReleaseDescriptor releaseDescriptor, ReleaseManagerListener listener, List reactorProjects )
     {
+        updateListener( listener, "cleanup", PHASE_START );
+
         getLogger().info( "Cleaning up after release..." );
 
         configStore.delete( releaseDescriptor );
@@ -505,16 +378,13 @@
 
             phase.clean( reactorProjects );
         }
+
+        updateListener( listener, "cleanup", PHASE_END );
     }
 
     void setConfigStore( ReleaseDescriptorStore configStore )
     {
         this.configStore = configStore;
-    }
-
-    void setMavenExecutor( MavenExecutor mavenExecutor )
-    {
-        this.mavenExecutor = mavenExecutor;
     }
 
     void updateListener( ReleaseManagerListener listener, String name, int state )

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java?view=diff&rev=534241&r1=534240&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java Tue May  1 13:56:16 2007
@@ -22,7 +22,6 @@
 import org.apache.maven.settings.Settings;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
 
-import java.io.File;
 import java.util.List;
 
 /**
@@ -70,14 +69,10 @@
      * @param releaseDescriptor the configuration to use for release
      * @param settings          the settings.xml configuration
      * @param reactorProjects   the reactor projects
-     * @param checkoutDirectory the location to checkout to and build from
-     * @param goals             the goals to execute
-     * @param useReleaseProfile whether to use the release profile from the super POM or not
      * @throws ReleaseExecutionException if there is a problem performing the release
      * @throws ReleaseFailureException   if there is a problem performing the release
      */
-    void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects, File checkoutDirectory,
-                  String goals, boolean useReleaseProfile )
+    void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
         throws ReleaseExecutionException, ReleaseFailureException;
 
     /**
@@ -86,7 +81,7 @@
      * @param releaseDescriptor the configuration to use for release
      * @param reactorProjects   the reactor projects
      */
-    void clean( ReleaseDescriptor releaseDescriptor, List reactorProjects );
+    void clean( ReleaseDescriptor releaseDescriptor, ReleaseManagerListener listener, List reactorProjects );
 
     /**
      * Rollback changes made by the previous release
@@ -111,11 +106,10 @@
     ReleaseResult prepareWithResult( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects,
                                      boolean resume, boolean dryRun, ReleaseManagerListener listener );
 
-    void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects, File checkoutDirectory,
-                  String goals, boolean useReleaseProfile, ReleaseManagerListener listener )
+    void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects,
+                  ReleaseManagerListener listener )
         throws ReleaseExecutionException, ReleaseFailureException;
 
     ReleaseResult performWithResult( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects,
-                                     File checkoutDirectory, String goals, boolean useReleaseProfile,
                                      ReleaseManagerListener listener );
 }

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java?view=diff&rev=534241&r1=534240&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java Tue May  1 13:56:16 2007
@@ -44,7 +44,8 @@
     {
         // Overridden if configured from the caller
         mergeInto.setScmSourceUrl( mergeOverride( mergeInto.getScmSourceUrl(), toBeMerged.getScmSourceUrl() ) );
-        mergeInto.setScmCommentPrefix( mergeOverride( mergeInto.getScmCommentPrefix(), toBeMerged.getScmCommentPrefix()));
+        mergeInto.setScmCommentPrefix(
+            mergeOverride( mergeInto.getScmCommentPrefix(), toBeMerged.getScmCommentPrefix() ) );
         mergeInto.setScmReleaseLabel(
             mergeOverride( mergeInto.getScmReleaseLabel(), toBeMerged.getScmReleaseLabel() ) );
         mergeInto.setScmTagBase( mergeOverride( mergeInto.getScmTagBase(), toBeMerged.getScmTagBase() ) );
@@ -59,19 +60,23 @@
             mergeOverride( mergeInto.getAdditionalArguments(), toBeMerged.getAdditionalArguments() ) );
         mergeInto.setPreparationGoals(
             mergeOverride( mergeInto.getPreparationGoals(), toBeMerged.getPreparationGoals() ) );
+        mergeInto.setPerformGoals( mergeOverride( mergeInto.getPerformGoals(), toBeMerged.getPerformGoals() ) );
         mergeInto.setPomFileName( mergeOverride( mergeInto.getPomFileName(), toBeMerged.getPomFileName() ) );
         mergeInto.setScmUseEditMode( toBeMerged.isScmUseEditMode() );
         mergeInto.setAddSchema( toBeMerged.isAddSchema() );
         mergeInto.setGenerateReleasePoms( toBeMerged.isGenerateReleasePoms() );
         mergeInto.setInteractive( toBeMerged.isInteractive() );
-        mergeInto.setUpdateDependencies( toBeMerged.isUpdateDependencies());
-        mergeInto.setCommitByProject( toBeMerged.isCommitByProject());
+        mergeInto.setUpdateDependencies( toBeMerged.isUpdateDependencies() );
+        mergeInto.setCommitByProject( toBeMerged.isCommitByProject() );
+        mergeInto.setUseReleaseProfile( toBeMerged.isUseReleaseProfile() );
 
         mergeInto.setAutoVersionSubmodules( toBeMerged.isAutoVersionSubmodules() );
 
         // These must be overridden, as they are not stored
         mergeInto.setWorkingDirectory(
             mergeOverride( mergeInto.getWorkingDirectory(), toBeMerged.getWorkingDirectory() ) );
+        mergeInto.setCheckoutDirectory(
+            mergeOverride( mergeInto.getCheckoutDirectory(), toBeMerged.getCheckoutDirectory() ) );
 
         // Not overridden - not configured from caller
         mergeInto.setCompletedPhase( mergeDefault( mergeInto.getCompletedPhase(), toBeMerged.getCompletedPhase() ) );

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractReleasePhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractReleasePhase.java?view=diff&rev=534241&r1=534240&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractReleasePhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractReleasePhase.java Tue May  1 13:56:16 2007
@@ -52,6 +52,12 @@
         getLogger().warn( message );
     }
 
+    protected void logError( ReleaseResult result, String message )
+    {
+        result.appendWarn( message );
+        getLogger().error( message );
+    }
+
     protected void logDebug( ReleaseResult result, String message, Exception e )
     {
         result.appendDebug( message, e );

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java?view=auto&rev=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java Tue May  1 13:56:16 2007
@@ -0,0 +1,79 @@
+package org.apache.maven.shared.release.phase;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.release.ReleaseExecutionException;
+import org.apache.maven.shared.release.ReleaseResult;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.exec.MavenExecutor;
+import org.apache.maven.shared.release.exec.MavenExecutorException;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.io.File;
+
+/**
+ * Run the integration tests for the project to verify that it builds before committing.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public abstract class AbstractRunGoalsPhase
+    extends AbstractReleasePhase
+{
+    /**
+     * Component to assist in executing Maven.
+     *
+     * @plexus.requirement
+     */
+    private MavenExecutor mavenExecutor;
+
+    public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, File workingDirectory,
+                                  String additionalArguments )
+        throws ReleaseExecutionException
+    {
+        ReleaseResult result = new ReleaseResult();
+
+        try
+        {
+            String goals = getGoals( releaseDescriptor );
+            if ( !StringUtils.isEmpty( goals ) )
+            {
+                logInfo( result, "Executing goals '" + goals + "'..." );
+
+                mavenExecutor.executeGoals( workingDirectory, goals, releaseDescriptor.isInteractive(),
+                                            additionalArguments, result );
+            }
+        }
+        catch ( MavenExecutorException e )
+        {
+            throw new ReleaseExecutionException( e.getMessage(), e );
+        }
+
+        result.setResultCode( ReleaseResult.SUCCESS );
+
+        return result;
+    }
+
+    public void setMavenExecutor( MavenExecutor mavenExecutor )
+    {
+        this.mavenExecutor = mavenExecutor;
+    }
+
+    protected abstract String getGoals( ReleaseDescriptor releaseDescriptor );
+}

Propchange: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRunGoalsPhase.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckCompletedPreparePhasesPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckCompletedPreparePhasesPhase.java?view=auto&rev=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckCompletedPreparePhasesPhase.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckCompletedPreparePhasesPhase.java Tue May  1 13:56:16 2007
@@ -0,0 +1,78 @@
+package org.apache.maven.shared.release.phase;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.settings.Settings;
+import org.apache.maven.shared.release.ReleaseExecutionException;
+import org.apache.maven.shared.release.ReleaseFailureException;
+import org.apache.maven.shared.release.ReleaseResult;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
+
+import java.util.List;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ * @plexus.component role="org.apache.maven.shared.release.phase.ReleasePhase" role-hint="verify-completed-prepare-phases"
+ */
+public class CheckCompletedPreparePhasesPhase
+    extends AbstractReleasePhase
+{
+    public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
+        throws ReleaseExecutionException, ReleaseFailureException
+    {
+        ReleaseResult result = new ReleaseResult();
+
+        // if we stopped mid-way through preparation - don't perform
+        if ( releaseDescriptor.getCompletedPhase() != null &&
+            !"end-release".equals( releaseDescriptor.getCompletedPhase() ) )
+        {
+            String message = "Cannot perform release - the preparation step was stopped mid-way. Please re-run " +
+                "release:prepare to continue, or perform the release from an SCM tag.";
+
+            result.setResultCode( ReleaseResult.ERROR );
+
+            logError( result, message );
+
+            throw new ReleaseFailureException( message );
+        }
+
+        if ( releaseDescriptor.getScmSourceUrl() == null )
+        {
+            String message = "No SCM URL was provided to perform the release from";
+
+            result.setResultCode( ReleaseResult.ERROR );
+
+            logError( result, message );
+
+            throw new ReleaseFailureException( message );
+        }
+
+        result.setResultCode( ReleaseResult.SUCCESS );
+
+        return result;
+    }
+
+    public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
+        throws ReleaseExecutionException, ReleaseFailureException
+    {
+        return execute( releaseDescriptor, settings, reactorProjects );
+    }
+}

Propchange: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckCompletedPreparePhasesPhase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckCompletedPreparePhasesPhase.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java?view=auto&rev=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java Tue May  1 13:56:16 2007
@@ -0,0 +1,154 @@
+package org.apache.maven.shared.release.phase;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmTag;
+import org.apache.maven.scm.command.checkout.CheckOutScmResult;
+import org.apache.maven.scm.manager.NoSuchScmProviderException;
+import org.apache.maven.scm.provider.ScmProvider;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.apache.maven.settings.Settings;
+import org.apache.maven.shared.release.ReleaseExecutionException;
+import org.apache.maven.shared.release.ReleaseFailureException;
+import org.apache.maven.shared.release.ReleaseResult;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.scm.ReleaseScmCommandException;
+import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
+import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
+import org.apache.maven.shared.release.util.ReleaseUtil;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ * @plexus.component role="org.apache.maven.shared.release.phase.ReleasePhase" role-hint="checkout-project-from-scm"
+ */
+public class CheckoutProjectFromScm
+    extends AbstractReleasePhase
+{
+    /**
+     * Tool that gets a configured SCM repository from release configuration.
+     *
+     * @plexus.requirement
+     */
+    private ScmRepositoryConfigurator scmRepositoryConfigurator;
+
+    public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
+        throws ReleaseExecutionException, ReleaseFailureException
+    {
+        ReleaseResult result = new ReleaseResult();
+
+        logInfo( result, "Checking out the project to perform the release ..." );
+
+        ScmRepository repository;
+        ScmProvider provider;
+
+        try
+        {
+            repository = scmRepositoryConfigurator.getConfiguredRepository( releaseDescriptor, settings );
+
+            provider = scmRepositoryConfigurator.getRepositoryProvider( repository );
+        }
+        catch ( ScmRepositoryException e )
+        {
+            result.setResultCode( ReleaseResult.ERROR );
+            logError( result, e.getMessage() );
+
+            throw new ReleaseScmRepositoryException( e.getMessage(), e.getValidationMessages() );
+        }
+        catch ( NoSuchScmProviderException e )
+        {
+            result.setResultCode( ReleaseResult.ERROR );
+            logError( result, e.getMessage() );
+
+            throw new ReleaseExecutionException( "Unable to configure SCM repository: " + e.getMessage(), e );
+        }
+
+        // TODO: sanity check that it is not . or .. or lower
+        File checkoutDirectory;
+        if ( StringUtils.isEmpty( releaseDescriptor.getCheckoutDirectory() ) )
+        {
+            checkoutDirectory =
+                new File( ReleaseUtil.getRootProject( reactorProjects ).getFile().getParentFile(), "target/checkout" );
+            releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
+        }
+        else
+        {
+            checkoutDirectory = new File( releaseDescriptor.getCheckoutDirectory() );
+        }
+
+        if ( checkoutDirectory.exists() )
+        {
+            try
+            {
+                FileUtils.deleteDirectory( checkoutDirectory );
+            }
+            catch ( IOException e )
+            {
+                result.setResultCode( ReleaseResult.ERROR );
+                logError( result, e.getMessage() );
+
+                throw new ReleaseExecutionException( "Unable to remove old checkout directory: " + e.getMessage(), e );
+            }
+        }
+
+        checkoutDirectory.mkdirs();
+
+        CheckOutScmResult scmResult;
+
+        try
+        {
+            scmResult = provider.checkOut( repository, new ScmFileSet( checkoutDirectory ),
+                                           new ScmTag( releaseDescriptor.getScmReleaseLabel() ) );
+        }
+        catch ( ScmException e )
+        {
+            result.setResultCode( ReleaseResult.ERROR );
+            logError( result, e.getMessage() );
+
+            throw new ReleaseExecutionException( "An error is occurred in the checkout process: " + e.getMessage(), e );
+        }
+        if ( !scmResult.isSuccess() )
+        {
+            result.setResultCode( ReleaseResult.ERROR );
+            logError( result, scmResult.getProviderMessage() );
+
+            throw new ReleaseScmCommandException( "Unable to checkout from SCM", scmResult );
+        }
+
+        result.setResultCode( ReleaseResult.SUCCESS );
+
+        return result;
+    }
+
+    public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
+        throws ReleaseExecutionException, ReleaseFailureException
+    {
+        return simulate( releaseDescriptor, settings, reactorProjects );
+    }
+}

Propchange: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhase.java?view=auto&rev=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhase.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhase.java Tue May  1 13:56:16 2007
@@ -0,0 +1,76 @@
+package org.apache.maven.shared.release.phase;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.settings.Settings;
+import org.apache.maven.shared.release.ReleaseExecutionException;
+import org.apache.maven.shared.release.ReleaseResult;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Run the integration tests for the project to verify that it builds before committing.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @plexus.component role="org.apache.maven.shared.release.phase.ReleasePhase" role-hint="run-perform-goals"
+ */
+public class RunPerformGoalsPhase
+    extends AbstractRunGoalsPhase
+{
+    public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
+        throws ReleaseExecutionException
+    {
+        String additionalArguments = releaseDescriptor.getAdditionalArguments();
+
+        if ( releaseDescriptor.isUseReleaseProfile() )
+        {
+            if ( !StringUtils.isEmpty( additionalArguments ) )
+            {
+                additionalArguments = additionalArguments + " -DperformRelease=true";
+            }
+            else
+            {
+                additionalArguments = "-DperformRelease=true";
+            }
+        }
+
+        return execute( releaseDescriptor, new File( releaseDescriptor.getCheckoutDirectory() ), additionalArguments );
+    }
+
+    public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
+        throws ReleaseExecutionException
+    {
+        ReleaseResult result = new ReleaseResult();
+
+        logInfo( result, "Executing perform goals" );
+
+        execute( releaseDescriptor, settings, reactorProjects );
+
+        return result;
+    }
+
+    protected String getGoals( ReleaseDescriptor releaseDescriptor )
+    {
+        return releaseDescriptor.getPerformGoals();
+    }
+}

Propchange: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhase.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunPrepareGoalsPhase.java (from r533989, maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunGoalsPhase.java)
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunPrepareGoalsPhase.java?view=diff&rev=534241&p1=maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunGoalsPhase.java&r1=533989&p2=maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunPrepareGoalsPhase.java&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunGoalsPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RunPrepareGoalsPhase.java Tue May  1 13:56:16 2007
@@ -23,9 +23,6 @@
 import org.apache.maven.shared.release.ReleaseExecutionException;
 import org.apache.maven.shared.release.ReleaseResult;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
-import org.apache.maven.shared.release.exec.MavenExecutor;
-import org.apache.maven.shared.release.exec.MavenExecutorException;
-import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
 import java.util.List;
@@ -36,41 +33,14 @@
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @plexus.component role="org.apache.maven.shared.release.phase.ReleasePhase" role-hint="run-preparation-goals"
  */
-public class RunGoalsPhase
-    extends AbstractReleasePhase
+public class RunPrepareGoalsPhase
+    extends AbstractRunGoalsPhase
 {
-    /**
-     * Component to assist in executing Maven.
-     *
-     * @plexus.requirement
-     */
-    private MavenExecutor mavenExecutor;
-
     public ReleaseResult execute( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
         throws ReleaseExecutionException
     {
-        ReleaseResult result = new ReleaseResult();
-
-        try
-        {
-            String goals = releaseDescriptor.getPreparationGoals();
-            if ( !StringUtils.isEmpty( goals ) )
-            {
-                logInfo( result, "Executing preparation goals '" + goals + "'..." );
-
-                mavenExecutor.executeGoals( new File( releaseDescriptor.getWorkingDirectory() ), goals,
-                                            releaseDescriptor.isInteractive(),
-                                            releaseDescriptor.getAdditionalArguments(), result );
-            }
-        }
-        catch ( MavenExecutorException e )
-        {
-            throw new ReleaseExecutionException( e.getMessage(), e );
-        }
-
-        result.setResultCode( ReleaseResult.SUCCESS );
-
-        return result;
+        return execute( releaseDescriptor, new File( releaseDescriptor.getWorkingDirectory() ),
+                        releaseDescriptor.getAdditionalArguments() );
     }
 
     public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor, Settings settings, List reactorProjects )
@@ -86,8 +56,8 @@
         return result;
     }
 
-    public void setMavenExecutor( MavenExecutor mavenExecutor )
+    protected String getGoals( ReleaseDescriptor releaseDescriptor )
     {
-        this.mavenExecutor = mavenExecutor;
+        return releaseDescriptor.getPreparationGoals();
     }
 }

Modified: maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo?view=diff&rev=534241&r1=534240&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo (original)
+++ maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo Tue May  1 13:56:16 2007
@@ -182,6 +182,15 @@
           </description>
         </field>
         <field>
+          <name>useReleaseProfile</name>
+          <version>1.0.0</version>
+          <type>boolean</type>
+          <defaultValue>true</defaultValue>
+          <description>
+            Whether to use the release profile that adds sources and javadocs to the released artifact, if appropriate.
+          </description>
+        </field>
+        <field>
           <name>originalScmInfo</name>
           <version>1.0.0</version>
           <type>Map</type>
@@ -202,6 +211,14 @@
           </description>
         </field>
         <field>
+          <name>checkoutDirectory</name>
+          <version>1.0.0</version>
+          <type>String</type>
+          <description>
+            The directory where the tag will be checked out.
+          </description>
+        </field>
+        <field>
           <name>completedPhase</name>
           <version>1.0.0</version>
           <type>String</type>
@@ -266,6 +283,14 @@
           <type>String</type>
           <description>
             The goals to execute in preparation for the release.
+          </description>
+        </field>
+        <field>
+          <name>performGoals</name>
+          <version>1.0.0</version>
+          <type>String</type>
+          <description>
+            The goals to execute in perform phase for the release.
           </description>
         </field>
         <field>

Modified: maven/release/trunk/maven-release-manager/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/resources/META-INF/plexus/components.xml?view=diff&rev=534241&r1=534240&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/release/trunk/maven-release-manager/src/main/resources/META-INF/plexus/components.xml Tue May  1 13:56:16 2007
@@ -37,9 +37,6 @@
         <requirement>
           <role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
         </requirement>
-        <requirement>
-          <role>org.apache.maven.shared.release.exec.MavenExecutor</role>
-        </requirement>
       </requirements>
       <configuration>
         <preparePhases>
@@ -62,10 +59,8 @@
         </preparePhases>
         <performPhases>
           <phase>verify-completed-prepare-phases</phase>
-          <phase>configure-repositories</phase>
           <phase>checkout-project-from-scm</phase>
-          <phase>build-project</phase>
-          <phase>cleanup</phase>
+          <phase>run-perform-goals</phase>
         </performPhases>
         <rollbackPhases>
           <phase>restore-backup-poms</phase>

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java?view=diff&rev=534241&r1=534240&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java Tue May  1 13:56:16 2007
@@ -34,10 +34,10 @@
 import org.apache.maven.shared.release.config.ReleaseDescriptorStoreException;
 import org.apache.maven.shared.release.config.ReleaseDescriptorStoreStub;
 import org.apache.maven.shared.release.exec.MavenExecutor;
-import org.apache.maven.shared.release.exec.MavenExecutorException;
 import org.apache.maven.shared.release.phase.IsScmFileSetEquals;
 import org.apache.maven.shared.release.phase.ReleasePhase;
 import org.apache.maven.shared.release.phase.ReleasePhaseStub;
+import org.apache.maven.shared.release.phase.RunPerformGoalsPhase;
 import org.apache.maven.shared.release.scm.DefaultScmRepositoryConfigurator;
 import org.apache.maven.shared.release.scm.ReleaseScmCommandException;
 import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
@@ -372,7 +372,7 @@
 
         releaseManager.setConfigStore( (ReleaseDescriptorStore) configStoreMock.proxy() );
 
-        releaseManager.clean( releaseDescriptor, null );
+        releaseManager.clean( releaseDescriptor, null, null );
 
         Map phases = container.lookupMap( ReleasePhase.ROLE );
 
@@ -394,12 +394,14 @@
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         File checkoutDirectory = getTestFile( "target/checkout-directory" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
 
         Mock mock = new Mock( MavenExecutor.class );
         Constraint[] constraints = new Constraint[]{new IsSame( checkoutDirectory ), new IsEqual( "goal1 goal2" ),
             new IsEqual( Boolean.TRUE ), new IsEqual( "-DperformRelease=true" ), new IsNull(), new IsAnything()};
         mock.expects( new InvokeOnceMatcher() ).method( "executeGoals" ).with( constraints );
-        releaseManager.setMavenExecutor( (MavenExecutor) mock.proxy() );
+        RunPerformGoalsPhase phase = (RunPerformGoalsPhase) lookup( ReleasePhase.ROLE, "run-perform-goals" );
+        phase.setMavenExecutor( (MavenExecutor) mock.proxy() );
 
         Mock scmProviderMock = new Mock( ScmProvider.class );
         constraints = new Constraint[]{new IsAnything(), new IsScmFileSetEquals( new ScmFileSet( checkoutDirectory ) ),
@@ -410,7 +412,7 @@
         ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
         stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
 
-        releaseManager.perform( releaseDescriptor, null, null, checkoutDirectory, "goal1 goal2", true );
+        releaseManager.perform( releaseDescriptor, null, null );
 
         assertTrue( true );
     }
@@ -423,12 +425,14 @@
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         File checkoutDirectory = getTestFile( "target/checkout-directory" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
 
         Mock mock = new Mock( MavenExecutor.class );
         Constraint[] constraints = new Constraint[]{new IsSame( checkoutDirectory ), new IsEqual( "goal1 goal2" ),
             new IsEqual( Boolean.TRUE ), new IsNull(), new IsNull(), new IsAnything()};
         mock.expects( new InvokeOnceMatcher() ).method( "executeGoals" ).with( constraints );
-        releaseManager.setMavenExecutor( (MavenExecutor) mock.proxy() );
+        RunPerformGoalsPhase phase = (RunPerformGoalsPhase) lookup( ReleasePhase.ROLE, "run-perform-goals" );
+        phase.setMavenExecutor( (MavenExecutor) mock.proxy() );
 
         Mock scmProviderMock = new Mock( ScmProvider.class );
         constraints = new Constraint[]{new IsAnything(), new IsScmFileSetEquals( new ScmFileSet( checkoutDirectory ) ),
@@ -439,7 +443,9 @@
         ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
         stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
 
-        releaseManager.perform( releaseDescriptor, null, null, checkoutDirectory, "goal1 goal2", false );
+        releaseDescriptor.setUseReleaseProfile( false );
+
+        releaseManager.perform( releaseDescriptor, null, null );
 
         assertTrue( true );
     }
@@ -453,13 +459,15 @@
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         releaseDescriptor.setAdditionalArguments( "-Dmaven.test.skip=true" );
         File checkoutDirectory = getTestFile( "target/checkout-directory" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
 
         Mock mock = new Mock( MavenExecutor.class );
         Constraint[] constraints = new Constraint[]{new IsSame( checkoutDirectory ), new IsEqual( "goal1 goal2" ),
             new IsEqual( Boolean.TRUE ), new IsEqual( "-Dmaven.test.skip=true -DperformRelease=true" ), new IsNull(),
             new IsAnything()};
         mock.expects( new InvokeOnceMatcher() ).method( "executeGoals" ).with( constraints );
-        releaseManager.setMavenExecutor( (MavenExecutor) mock.proxy() );
+        RunPerformGoalsPhase phase = (RunPerformGoalsPhase) lookup( ReleasePhase.ROLE, "run-perform-goals" );
+        phase.setMavenExecutor( (MavenExecutor) mock.proxy() );
 
         Mock scmProviderMock = new Mock( ScmProvider.class );
         constraints = new Constraint[]{new IsAnything(), new IsScmFileSetEquals( new ScmFileSet( checkoutDirectory ) ),
@@ -470,7 +478,7 @@
         ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
         stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
 
-        releaseManager.perform( releaseDescriptor, null, null, checkoutDirectory, "goal1 goal2", true );
+        releaseManager.perform( releaseDescriptor, null, null );
 
         assertTrue( true );
     }
@@ -484,12 +492,14 @@
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         releaseDescriptor.setAdditionalArguments( "-Dmaven.test.skip=true" );
         File checkoutDirectory = getTestFile( "target/checkout-directory" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
 
         Mock mock = new Mock( MavenExecutor.class );
         Constraint[] constraints = new Constraint[]{new IsSame( checkoutDirectory ), new IsEqual( "goal1 goal2" ),
             new IsEqual( Boolean.TRUE ), new IsEqual( "-Dmaven.test.skip=true" ), new IsNull(), new IsAnything()};
         mock.expects( new InvokeOnceMatcher() ).method( "executeGoals" ).with( constraints );
-        releaseManager.setMavenExecutor( (MavenExecutor) mock.proxy() );
+        RunPerformGoalsPhase phase = (RunPerformGoalsPhase) lookup( ReleasePhase.ROLE, "run-perform-goals" );
+        phase.setMavenExecutor( (MavenExecutor) mock.proxy() );
 
         Mock scmProviderMock = new Mock( ScmProvider.class );
         constraints = new Constraint[]{new IsAnything(), new IsScmFileSetEquals( new ScmFileSet( checkoutDirectory ) ),
@@ -500,7 +510,9 @@
         ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
         stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
 
-        releaseManager.perform( releaseDescriptor, null, null, checkoutDirectory, "goal1 goal2", false );
+        releaseDescriptor.setUseReleaseProfile( false );
+
+        releaseManager.perform( releaseDescriptor, null, null );
 
         assertTrue( true );
     }
@@ -513,12 +525,14 @@
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         File checkoutDirectory = getTestFile( "target/checkout-directory" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
 
         Mock mock = new Mock( MavenExecutor.class );
         Constraint[] constraints = new Constraint[]{new IsSame( checkoutDirectory ), new IsEqual( "goal1 goal2" ),
             new IsEqual( Boolean.TRUE ), new IsEqual( "-DperformRelease=true" ), new IsNull(), new IsAnything()};
         mock.expects( new InvokeOnceMatcher() ).method( "executeGoals" ).with( constraints );
-        releaseManager.setMavenExecutor( (MavenExecutor) mock.proxy() );
+        RunPerformGoalsPhase phase = (RunPerformGoalsPhase) lookup( ReleasePhase.ROLE, "run-perform-goals" );
+        phase.setMavenExecutor( (MavenExecutor) mock.proxy() );
 
         Mock scmProviderMock = new Mock( ScmProvider.class );
         constraints = new Constraint[]{new IsAnything(), new IsScmFileSetEquals( new ScmFileSet( checkoutDirectory ) ),
@@ -533,7 +547,7 @@
         configStore.getReleaseConfiguration().setCompletedPhase( "end-release" );
         releaseManager.setConfigStore( configStore );
 
-        releaseManager.perform( releaseDescriptor, null, null, checkoutDirectory, "goal1 goal2", true );
+        releaseManager.perform( releaseDescriptor, null, null );
 
         assertTrue( true );
     }
@@ -556,7 +570,9 @@
 
         try
         {
-            releaseManager.perform( releaseDescriptor, null, null, null, null, false );
+            releaseDescriptor.setUseReleaseProfile( false );
+
+            releaseManager.perform( releaseDescriptor, null, null );
             fail( "Should have failed to read configuration" );
         }
         catch ( ReleaseExecutionException e )
@@ -576,12 +592,14 @@
         DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
 
         ReleaseDescriptorStoreStub configStore = new ReleaseDescriptorStoreStub();
-        configStore.getReleaseConfiguration().setCompletedPhase( "scm-tag" );
+        releaseDescriptor.setCompletedPhase( "scm-tag" );
         releaseManager.setConfigStore( configStore );
 
         try
         {
-            releaseManager.perform( releaseDescriptor, null, null, null, null, false );
+            releaseDescriptor.setUseReleaseProfile( false );
+
+            releaseManager.perform( releaseDescriptor, null, null );
             fail( "Should have failed to perform" );
         }
         catch ( ReleaseFailureException e )
@@ -601,7 +619,9 @@
 
         try
         {
-            releaseManager.perform( releaseDescriptor, null, null, null, null, false );
+            releaseDescriptor.setUseReleaseProfile( false );
+
+            releaseManager.perform( releaseDescriptor, null, null );
 
             fail( "perform should have failed" );
         }
@@ -631,7 +651,9 @@
 
         try
         {
-            releaseManager.perform( releaseDescriptor, null, null, null, null, false );
+            releaseDescriptor.setUseReleaseProfile( false );
+
+            releaseManager.perform( releaseDescriptor, null, null );
 
             fail( "commit should have failed" );
         }
@@ -661,7 +683,9 @@
 
         try
         {
-            releaseManager.perform( releaseDescriptor, null, null, null, null, false );
+            releaseDescriptor.setUseReleaseProfile( false );
+
+            releaseManager.perform( releaseDescriptor, null, null );
 
             fail( "commit should have failed" );
         }
@@ -679,6 +703,7 @@
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         File checkoutDirectory = getTestFile( "target/checkout-directory" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
 
         Mock scmProviderMock = new Mock( ScmProvider.class );
         scmProviderMock.expects( new InvokeOnceMatcher() ).method( "checkOut" ).will(
@@ -689,7 +714,7 @@
 
         try
         {
-            releaseManager.perform( releaseDescriptor, null, null, checkoutDirectory, "goals", true );
+            releaseManager.perform( releaseDescriptor, null, null );
 
             fail( "commit should have failed" );
         }
@@ -707,6 +732,7 @@
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         File checkoutDirectory = getTestFile( "target/checkout-directory" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
 
         ScmManager scmManager = (ScmManager) lookup( ScmManager.ROLE );
         ScmProviderStub providerStub =
@@ -716,7 +742,7 @@
 
         try
         {
-            releaseManager.perform( releaseDescriptor, null, null, checkoutDirectory, "goals", true );
+            releaseManager.perform( releaseDescriptor, null, null );
 
             fail( "commit should have failed" );
         }
@@ -726,48 +752,11 @@
         }
     }
 
-    public void testReleasePerformExecutionException()
-        throws Exception
-    {
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
-
-        ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
-        releaseDescriptor.setScmSourceUrl( "scm-url" );
-        File checkoutDirectory = getTestFile( "target/checkout-directory" );
-
-        Mock mock = new Mock( MavenExecutor.class );
-        Constraint[] constraints = new Constraint[]{new IsSame( checkoutDirectory ), new IsEqual( "goal1 goal2" ),
-            new IsEqual( Boolean.TRUE ), new IsEqual( "-DperformRelease=true" ), new IsNull(), new IsAnything()};
-        mock.expects( new InvokeOnceMatcher() ).method( "executeGoals" ).with( constraints ).will(
-            new ThrowStub( new MavenExecutorException( "...", 1, "stdOut", "stdErr" ) ) );
-        releaseManager.setMavenExecutor( (MavenExecutor) mock.proxy() );
-
-        Mock scmProviderMock = new Mock( ScmProvider.class );
-        constraints = new Constraint[]{new IsAnything(), new IsScmFileSetEquals( new ScmFileSet( checkoutDirectory ) ),
-            new IsInstanceOf( ScmTag.class )};
-        scmProviderMock.expects( new InvokeOnceMatcher() ).method( "checkOut" ).with( constraints ).will(
-            new ReturnStub( new CheckOutScmResult( "...", Collections.EMPTY_LIST ) ) );
-
-        ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
-        stub.setScmProvider( (ScmProvider) scmProviderMock.proxy() );
-
-        try
-        {
-            releaseManager.perform( releaseDescriptor, null, null, checkoutDirectory, "goal1 goal2", true );
-
-            fail( "Expected exception" );
-        }
-        catch ( ReleaseExecutionException e )
-        {
-            assertEquals( "Check cause", MavenExecutorException.class, e.getCause().getClass() );
-        }
-    }
-
     public void testDetermineWorkingDirectory()
         throws Exception
     {
         DefaultReleaseManager defaultReleaseManager = new DefaultReleaseManager();
-        
+
         File checkoutDir = getTestFile( "target/checkout" );
         FileUtils.forceDelete( checkoutDir );
         checkoutDir.mkdirs();
@@ -782,9 +771,9 @@
         // checkout dir and relative path project dir
         assertEquals( projectDir, defaultReleaseManager.determineWorkingDirectory( checkoutDir, "my/project" ) );
         assertEquals( projectDir, defaultReleaseManager.determineWorkingDirectory( checkoutDir, "my/project/" ) );
-        assertEquals( projectDir, defaultReleaseManager.determineWorkingDirectory( checkoutDir, "my"
-                + File.separator + "project" ) );
+        assertEquals( projectDir, defaultReleaseManager.determineWorkingDirectory( checkoutDir, "my" + File.separator +
+            "project" ) );
 
-        FileUtils.forceDelete( checkoutDir);
+        FileUtils.forceDelete( checkoutDir );
     }
 }

Added: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.java?view=auto&rev=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.java (added)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.java Tue May  1 13:56:16 2007
@@ -0,0 +1,65 @@
+package org.apache.maven.shared.release.phase;
+
+import org.apache.maven.settings.Settings;
+import org.apache.maven.shared.release.ReleaseExecutionException;
+import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.exec.MavenExecutor;
+import org.apache.maven.shared.release.exec.MavenExecutorException;
+import org.codehaus.plexus.PlexusTestCase;
+import org.jmock.Mock;
+import org.jmock.core.Constraint;
+import org.jmock.core.constraint.IsAnything;
+import org.jmock.core.constraint.IsEqual;
+import org.jmock.core.matcher.InvokeOnceMatcher;
+import org.jmock.core.stub.ThrowStub;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public class RunPerformGoalsPhaseTest
+    extends PlexusTestCase
+{
+    private RunPerformGoalsPhase phase;
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        phase = (RunPerformGoalsPhase) lookup( ReleasePhase.ROLE, "run-perform-goals" );
+    }
+
+    public void testExecuteException()
+        throws Exception
+    {
+        File testFile = getTestFile( "target/checkout-directory" );
+
+        ReleaseDescriptor config = new ReleaseDescriptor();
+        config.setPerformGoals( "goal1 goal2" );
+        config.setCheckoutDirectory( testFile.getAbsolutePath() );
+
+        Mock mock = new Mock( MavenExecutor.class );
+        Constraint[] constraints = new Constraint[]{new IsEqual( testFile ), new IsEqual( "goal1 goal2" ),
+            new IsEqual( Boolean.TRUE ), new IsEqual( "-DperformRelease=true" ), new IsAnything()};
+        mock.expects( new InvokeOnceMatcher() ).method( "executeGoals" ).with( constraints ).will(
+            new ThrowStub( new MavenExecutorException( "...", new Exception() ) ) );
+
+        phase.setMavenExecutor( (MavenExecutor) mock.proxy() );
+
+        try
+        {
+            phase.execute( config, (Settings) null, (List) null );
+
+            fail( "Should have thrown an exception" );
+        }
+        catch ( ReleaseExecutionException e )
+        {
+            assertEquals( "Check cause", MavenExecutorException.class, e.getCause().getClass() );
+        }
+    }
+
+}

Propchange: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunPrepareGoalsPhaseTest.java (from r533989, maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunGoalsPhaseTest.java)
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunPrepareGoalsPhaseTest.java?view=diff&rev=534241&p1=maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunGoalsPhaseTest.java&r1=533989&p2=maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunPrepareGoalsPhaseTest.java&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunGoalsPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/RunPrepareGoalsPhaseTest.java Tue May  1 13:56:16 2007
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.maven.settings.Settings;
 import org.apache.maven.shared.release.ReleaseExecutionException;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
 import org.apache.maven.shared.release.exec.MavenExecutor;
@@ -34,23 +35,24 @@
 import org.jmock.core.stub.ThrowStub;
 
 import java.io.File;
+import java.util.List;
 
 /**
  * Test the simple test running phase.
  *
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  */
-public class RunGoalsPhaseTest
+public class RunPrepareGoalsPhaseTest
     extends PlexusTestCase
 {
-    private RunGoalsPhase phase;
+    private RunPrepareGoalsPhase phase;
 
     protected void setUp()
         throws Exception
     {
         super.setUp();
 
-        phase = (RunGoalsPhase) lookup( ReleasePhase.ROLE, "run-preparation-goals" );
+        phase = (RunPrepareGoalsPhase) lookup( ReleasePhase.ROLE, "run-preparation-goals" );
     }
 
     public void testExecute()
@@ -70,7 +72,7 @@
 
         phase.setMavenExecutor( (MavenExecutor) mock.proxy() );
 
-        phase.execute( config, null, null );
+        phase.execute( config, (Settings) null, (List) null );
 
         // just needs to survive the mock
         assertTrue( true );
@@ -116,7 +118,7 @@
 
         try
         {
-            phase.execute( config, null, null );
+            phase.execute( config, (Settings) null, (List) null );
 
             fail( "Should have thrown an exception" );
         }
@@ -168,7 +170,7 @@
 
         phase.setMavenExecutor( (MavenExecutor) mock.proxy() );
 
-        phase.execute( config, null, null );
+        phase.execute( config, (Settings) null, (List) null );
 
         // just needs to survive the mock
         assertTrue( true );

Modified: maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/DefaultReleaseManagerTest.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/DefaultReleaseManagerTest.xml?view=diff&rev=534241&r1=534240&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/DefaultReleaseManagerTest.xml (original)
+++ maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/DefaultReleaseManagerTest.xml Tue May  1 13:56:16 2007
@@ -36,9 +36,6 @@
         <requirement>
           <role>org.apache.maven.shared.release.scm.ScmRepositoryConfigurator</role>
         </requirement>
-        <requirement>
-          <role>org.apache.maven.shared.release.exec.MavenExecutor</role>
-        </requirement>
       </requirements>
       <configuration>
         <preparePhases>
@@ -46,6 +43,11 @@
           <phase>step2</phase>
           <phase>step3</phase>
         </preparePhases>
+        <performPhases>
+          <phase>verify-completed-prepare-phases</phase>
+          <phase>checkout-project-from-scm</phase>
+          <phase>run-perform-goals</phase>
+        </performPhases>
       </configuration>
     </component>
     <component>

Added: maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.xml?view=auto&rev=534241
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.xml (added)
+++ maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.xml Tue May  1 13:56:16 2007
@@ -0,0 +1,32 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<component-set>
+  <components>
+    <!-- Turn off info messages -->
+    <component>
+      <role>org.codehaus.plexus.logging.LoggerManager</role>
+      <implementation>org.codehaus.plexus.logging.console.ConsoleLoggerManager</implementation>
+      <lifecycle-handler>basic</lifecycle-handler>
+      <configuration>
+        <threshold>ERROR</threshold>
+      </configuration>
+    </component>
+  </components>
+</component-set>

Propchange: maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/RunPerformGoalsPhaseTest.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java?view=diff&rev=534241&r1=534240&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java (original)
+++ maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java Tue May  1 13:56:16 2007
@@ -39,6 +39,6 @@
     {
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setWorkingDirectory( basedir.getAbsolutePath() );
-        releaseManager.clean( releaseDescriptor, reactorProjects );
+        releaseManager.clean( releaseDescriptor, null, reactorProjects );
     }
 }

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?view=diff&rev=534241&r1=534240&r2=534241
==============================================================================
--- 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 Tue May  1 13:56:16 2007
@@ -82,6 +82,9 @@
                 releaseDescriptor.setScmSourceUrl( connectionUrl );
             }
 
+            releaseDescriptor.setCheckoutDirectory( workingDirectory.getAbsolutePath() );
+            releaseDescriptor.setUseReleaseProfile( useReleaseProfile );
+
             if ( goals == null )
             {
                 // set default
@@ -92,9 +95,9 @@
                     goals += " site-deploy";
                 }
             }
+            releaseDescriptor.setPerformGoals( goals );
 
-            releaseManager.perform( releaseDescriptor, settings, reactorProjects, workingDirectory, goals,
-                                    useReleaseProfile );
+            releaseManager.perform( releaseDescriptor, settings, reactorProjects );
         }
         catch ( ReleaseExecutionException e )
         {

Modified: maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/CleanReleaseMojoTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/CleanReleaseMojoTest.java?view=diff&rev=534241&r1=534240&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/CleanReleaseMojoTest.java (original)
+++ maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/CleanReleaseMojoTest.java Tue May  1 13:56:16 2007
@@ -45,6 +45,7 @@
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
 import org.jmock.Mock;
 import org.jmock.core.constraint.IsEqual;
+import org.jmock.core.constraint.IsNull;
 import org.jmock.core.matcher.InvokeOnceMatcher;
 
 import java.io.File;
@@ -79,7 +80,7 @@
         descriptor.setWorkingDirectory( workingDirectory.getAbsolutePath() );
 
         Mock mock = new Mock( ReleaseManager.class );
-        mock.expects( new InvokeOnceMatcher() ).method( "clean" ).with( new IsEqual( descriptor ),
+        mock.expects( new InvokeOnceMatcher() ).method( "clean" ).with( new IsEqual( descriptor ), new IsNull(),
                                                                         new IsEqual( mojo.getReactorProjects() ) );
         mojo.setReleaseManager( (ReleaseManager) mock.proxy() );
 

Modified: maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PerformReleaseMojoTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PerformReleaseMojoTest.java?view=diff&rev=534241&r1=534240&r2=534241
==============================================================================
--- maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PerformReleaseMojoTest.java (original)
+++ maven/release/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PerformReleaseMojoTest.java Tue May  1 13:56:16 2007
@@ -77,12 +77,14 @@
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setWorkingDirectory( workingDirectory.getAbsolutePath() );
+        File checkoutDirectory = getTestFile( "target/checkout" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
+        releaseDescriptor.setPerformGoals( "deploy site-deploy" );
         Settings settings = mojo.getSettings();
 
         Mock mock = new Mock( ReleaseManager.class );
-        Constraint[] constraints = new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ),
-            new IsNull(), new IsEqual( new File( getBasedir(), "target/checkout" ) ),
-            new IsEqual( "deploy site-deploy" ), new IsEqual( Boolean.TRUE )};
+        Constraint[] constraints =
+            new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ), new IsNull()};
         mock.expects( new InvokeOnceMatcher() ).method( "perform" ).with( constraints );
         mojo.setReleaseManager( (ReleaseManager) mock.proxy() );
 
@@ -101,12 +103,14 @@
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setWorkingDirectory( workingDirectory.getAbsolutePath() );
+        File checkoutDirectory = getTestFile( "target/checkout" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
+        releaseDescriptor.setPerformGoals( "deploy" );
         Settings settings = mojo.getSettings();
 
         Mock mock = new Mock( ReleaseManager.class );
-        Constraint[] constraints = new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ),
-            new IsNull(), new IsEqual( new File( getBasedir(), "target/checkout" ) ), new IsEqual( "deploy" ),
-            new IsEqual( Boolean.TRUE )};
+        Constraint[] constraints =
+            new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ), new IsNull()};
         mock.expects( new InvokeOnceMatcher() ).method( "perform" ).with( constraints );
         mojo.setReleaseManager( (ReleaseManager) mock.proxy() );
 
@@ -136,12 +140,14 @@
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setWorkingDirectory( workingDirectory.getAbsolutePath() );
+        File checkoutDirectory = getTestFile( "target/checkout" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
+        releaseDescriptor.setPerformGoals( "deploy site-deploy" );
         Settings settings = mojo.getSettings();
 
         Mock mock = new Mock( ReleaseManager.class );
-        Constraint[] constraints = new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ),
-            new IsNull(), new IsEqual( new File( getBasedir(), "target/checkout" ) ),
-            new IsEqual( "deploy site-deploy" ), new IsEqual( Boolean.TRUE )};
+        Constraint[] constraints =
+            new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ), new IsNull()};
         mock.expects( new InvokeOnceMatcher() ).method( "perform" ).with( constraints ).will(
             new ThrowStub( new ReleaseExecutionException( "..." ) ) );
         mojo.setReleaseManager( (ReleaseManager) mock.proxy() );
@@ -165,12 +171,14 @@
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setWorkingDirectory( workingDirectory.getAbsolutePath() );
+        File checkoutDirectory = getTestFile( "target/checkout" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
+        releaseDescriptor.setPerformGoals( "deploy site-deploy" );
         Settings settings = mojo.getSettings();
 
         Mock mock = new Mock( ReleaseManager.class );
-        Constraint[] constraints = new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ),
-            new IsNull(), new IsEqual( new File( getBasedir(), "target/checkout" ) ),
-            new IsEqual( "deploy site-deploy" ), new IsEqual( Boolean.TRUE )};
+        Constraint[] constraints =
+            new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ), new IsNull()};
         mock.expects( new InvokeOnceMatcher() ).method( "perform" ).with( constraints ).will(
             new ThrowStub( new ReleaseFailureException( "..." ) ) );
         mojo.setReleaseManager( (ReleaseManager) mock.proxy() );
@@ -194,13 +202,15 @@
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setWorkingDirectory( workingDirectory.getAbsolutePath() );
+        File checkoutDirectory = getTestFile( "target/checkout" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
+        releaseDescriptor.setPerformGoals( "deploy site-deploy" );
         Settings settings = mojo.getSettings();
         releaseDescriptor.setScmSourceUrl( "scm-url" );
 
         Mock mock = new Mock( ReleaseManager.class );
-        Constraint[] constraints = new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ),
-            new IsNull(), new IsEqual( new File( getBasedir(), "target/checkout" ) ),
-            new IsEqual( "deploy site-deploy" ), new IsEqual( Boolean.TRUE )};
+        Constraint[] constraints =
+            new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ), new IsNull()};
         mock.expects( new InvokeOnceMatcher() ).method( "perform" ).with( constraints );
         mojo.setReleaseManager( (ReleaseManager) mock.proxy() );
 
@@ -216,6 +226,9 @@
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setWorkingDirectory( workingDirectory.getAbsolutePath() );
+        File checkoutDirectory = getTestFile( "target/checkout" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
+        releaseDescriptor.setPerformGoals( "deploy site-deploy" );
         Settings settings = mojo.getSettings();
         releaseDescriptor.setAdditionalArguments( "-P prof1,2prof" );
 
@@ -227,9 +240,8 @@
         project.setActiveProfiles( Arrays.asList( new Profile[]{profile1, profile2} ) );
 
         Mock mock = new Mock( ReleaseManager.class );
-        Constraint[] constraints = new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ),
-            new IsNull(), new IsEqual( new File( getBasedir(), "target/checkout" ) ),
-            new IsEqual( "deploy site-deploy" ), new IsEqual( Boolean.TRUE )};
+        Constraint[] constraints =
+            new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ), new IsNull()};
         mock.expects( new InvokeOnceMatcher() ).method( "perform" ).with( constraints );
         mojo.setReleaseManager( (ReleaseManager) mock.proxy() );
 
@@ -245,6 +257,9 @@
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setWorkingDirectory( workingDirectory.getAbsolutePath() );
+        File checkoutDirectory = getTestFile( "target/checkout" );
+        releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
+        releaseDescriptor.setPerformGoals( "deploy site-deploy" );
         Settings settings = mojo.getSettings();
         releaseDescriptor.setAdditionalArguments( "-Dmaven.test.skip=true -P prof1,2prof" );
 
@@ -256,9 +271,8 @@
         project.setActiveProfiles( Arrays.asList( new Profile[]{profile1, profile2} ) );
 
         Mock mock = new Mock( ReleaseManager.class );
-        Constraint[] constraints = new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ),
-            new IsNull(), new IsEqual( new File( getBasedir(), "target/checkout" ) ),
-            new IsEqual( "deploy site-deploy" ), new IsEqual( Boolean.TRUE )};
+        Constraint[] constraints =
+            new Constraint[]{new IsEqual( releaseDescriptor ), new IsEqual( settings ), new IsNull()};
         mock.expects( new InvokeOnceMatcher() ).method( "perform" ).with( constraints );
         mojo.setReleaseManager( (ReleaseManager) mock.proxy() );