You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2018/01/12 19:51:21 UTC

[maven-release] branch master updated: Remove all overloaded methods from ReleaseManager, only use ReleaseRequest

This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-release.git


The following commit(s) were added to refs/heads/master by this push:
     new 2bef00a  Remove all overloaded methods from ReleaseManager, only use Release<Goal>Request
2bef00a is described below

commit 2bef00a6c8a925d511c5eac697a47718c3a4b630
Author: rfscholte <rf...@apache.org>
AuthorDate: Fri Jan 12 20:51:14 2018 +0100

    Remove all overloaded methods from ReleaseManager, only use Release<Goal>Request
---
 .../shared/release/DefaultReleaseManager.java      | 300 +----------------
 .../maven/shared/release/ReleaseManager.java       | 372 +--------------------
 .../shared/release/DefaultReleaseManagerTest.java  | 186 ++++++++---
 .../maven/plugins/release/BranchReleaseMojo.java   |   9 +-
 .../maven/plugins/release/CleanReleaseMojo.java    |   8 +-
 .../maven/plugins/release/PrepareReleaseMojo.java  |  10 +-
 .../maven/plugins/release/RollbackReleaseMojo.java |  11 +-
 .../maven/plugins/release/UpdateVersionsMojo.java  |   8 +-
 .../plugins/release/CleanReleaseMojoTest.java      |  14 +-
 .../plugins/release/PrepareReleaseMojoTest.java    |  46 ++-
 10 files changed, 228 insertions(+), 736 deletions(-)

diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java
index a674bc7..c6e45f5 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/DefaultReleaseManager.java
@@ -28,13 +28,9 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.commons.lang3.BooleanUtils;
-import org.apache.maven.project.MavenProject;
-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.env.DefaultReleaseEnvironment;
-import org.apache.maven.shared.release.env.ReleaseEnvironment;
 import org.apache.maven.shared.release.phase.ReleasePhase;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.StringUtils;
@@ -86,25 +82,7 @@ public class DefaultReleaseManager
     private static final int PHASE_SKIP = 0, PHASE_START = 1, PHASE_END = 2, GOAL_START = 11, GOAL_END = 12, ERROR = 99;
 
     @Override
-    public void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                         List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        prepare( releaseDescriptor, releaseEnvironment, reactorProjects, true, false, null );
-    }
-
-    @Override
-    public void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                         List<MavenProject> reactorProjects, boolean resume, boolean dryRun )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        prepare( releaseDescriptor, releaseEnvironment, reactorProjects, resume, dryRun, null );
-    }
-
-    @Override
-    public ReleaseResult prepareWithResult( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                                            List<MavenProject> reactorProjects, boolean resume, boolean dryRun,
-                                            ReleaseManagerListener listener )
+    public ReleaseResult prepareWithResult( ReleasePrepareRequest prepareRequest )
     {
         ReleaseResult result = new ReleaseResult();
 
@@ -112,17 +90,13 @@ public class DefaultReleaseManager
 
         try
         {
-            prepare( releaseDescriptor, releaseEnvironment, reactorProjects, resume, dryRun, listener, result );
+            prepare( prepareRequest, result );
 
             result.setResultCode( ReleaseResult.SUCCESS );
         }
-        catch ( ReleaseExecutionException e )
-        {
-            captureException( result, listener, e );
-        }
-        catch ( ReleaseFailureException e )
+        catch ( ReleaseExecutionException | ReleaseFailureException e )
         {
-            captureException( result, listener, e );
+            captureException( result, prepareRequest.getReleaseManagerListener(), e );
         }
         finally
         {
@@ -133,37 +107,12 @@ public class DefaultReleaseManager
     }
 
     @Override
-    public void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                         List<MavenProject> reactorProjects, boolean resume, boolean dryRun,
-                         ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        prepare( releaseDescriptor, releaseEnvironment, reactorProjects, resume, dryRun, listener, null );
-    }
-
-    @Override
     public void prepare( ReleasePrepareRequest prepareRequest )
         throws ReleaseExecutionException, ReleaseFailureException
     {
         prepare( prepareRequest, new ReleaseResult() );
     }
 
-    private void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                          List<MavenProject> reactorProjects, boolean resume, boolean dryRun,
-                          ReleaseManagerListener listener, ReleaseResult result )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
-        prepareRequest.setReleaseDescriptor( releaseDescriptor );
-        prepareRequest.setReleaseEnvironment( releaseEnvironment );
-        prepareRequest.setReactorProjects( reactorProjects );
-        prepareRequest.setResume( resume );
-        prepareRequest.setDryRun( dryRun );
-        prepareRequest.setReleaseManagerListener( listener );
-
-        prepare( prepareRequest, result );
-    }
-
     private void prepare( ReleasePrepareRequest prepareRequest, ReleaseResult result )
         throws ReleaseExecutionException, ReleaseFailureException
     {
@@ -257,28 +206,6 @@ public class DefaultReleaseManager
     }
 
     @Override
-    public void rollback( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                          List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        rollback( releaseDescriptor, releaseEnvironment, reactorProjects, null );
-    }
-
-    @Override
-    public void rollback( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                          List<MavenProject> reactorProjects, ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        ReleaseRollbackRequest rollbackRequest = new ReleaseRollbackRequest();
-        rollbackRequest.setReleaseDescriptor( releaseDescriptor );
-        rollbackRequest.setReleaseEnvironment( releaseEnvironment );
-        rollbackRequest.setReactorProjects( reactorProjects );
-        rollbackRequest.setReleaseManagerListener( listener );
-
-        rollback( rollbackRequest );
-    }
-
-    @Override
     public void rollback( ReleaseRollbackRequest rollbackRequest )
         throws ReleaseExecutionException, ReleaseFailureException
     {
@@ -303,46 +230,12 @@ public class DefaultReleaseManager
         }
 
         //call release:clean so that resume will not be possible anymore after a rollback
-        clean( releaseDescriptor,
-               rollbackRequest.getReleaseManagerListener(),
-               rollbackRequest.getReactorProjects() );
+        clean( rollbackRequest );
         updateListener( rollbackRequest.getReleaseManagerListener(), "rollback", GOAL_END );
     }
 
     @Override
-    public void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                         List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        perform( releaseDescriptor, releaseEnvironment, reactorProjects, null, true );
-    }
-
-    @Override
-    public void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                         List<MavenProject> reactorProjects, boolean clean )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        perform( releaseDescriptor, releaseEnvironment, reactorProjects, null, clean );
-    }
-
-    @Override
-    public void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                         List<MavenProject> reactorProjects, ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        perform( releaseDescriptor, releaseEnvironment, reactorProjects, listener, true );
-    }
-
-    public void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                         List<MavenProject> reactorProjects, ReleaseManagerListener listener, boolean clean )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        perform( releaseDescriptor, releaseEnvironment, reactorProjects, listener, new ReleaseResult(), clean );
-    }
-
-    @Override
-    public ReleaseResult performWithResult( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                                            List<MavenProject> reactorProjects, ReleaseManagerListener listener )
+    public ReleaseResult performWithResult( ReleasePerformRequest performRequest )
     {
         ReleaseResult result = new ReleaseResult();
 
@@ -350,17 +243,13 @@ public class DefaultReleaseManager
         {
             result.setStartTime( System.currentTimeMillis() );
 
-            perform( releaseDescriptor, releaseEnvironment, reactorProjects, listener, result, true );
+            perform( performRequest, result );
 
             result.setResultCode( ReleaseResult.SUCCESS );
         }
-        catch ( ReleaseExecutionException e )
-        {
-            captureException( result, listener, e );
-        }
-        catch ( ReleaseFailureException e )
+        catch ( ReleaseExecutionException | ReleaseFailureException e )
         {
-            captureException( result, listener, e );
+            captureException( result, performRequest.getReleaseManagerListener(), e );
         }
         finally
         {
@@ -377,21 +266,6 @@ public class DefaultReleaseManager
         perform( performRequest, new ReleaseResult() );
     }
 
-    private void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                          List<MavenProject> reactorProjects, ReleaseManagerListener listener, ReleaseResult result,
-                          boolean clean )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        ReleasePerformRequest performRequest = new ReleasePerformRequest();
-        performRequest.setReleaseDescriptor( releaseDescriptor );
-        performRequest.setReleaseEnvironment( releaseEnvironment );
-        performRequest.setReactorProjects( reactorProjects );
-        performRequest.setReleaseManagerListener( listener );
-        performRequest.setClean( clean );
-
-        perform( performRequest, result );
-    }
-
     private void perform( ReleasePerformRequest performRequest, ReleaseResult result )
         throws ReleaseExecutionException, ReleaseFailureException
     {
@@ -441,36 +315,13 @@ public class DefaultReleaseManager
         if ( BooleanUtils.isNotFalse( performRequest.getClean() ) )
         {
             // call release:clean so that resume will not be possible anymore after a perform
-            clean( releaseDescriptor, performRequest.getReleaseManagerListener(), performRequest.getReactorProjects() );
+            clean( performRequest );
         }
 
         updateListener( performRequest.getReleaseManagerListener(), "perform", GOAL_END );
     }
 
     @Override
-    public void branch( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                        List<MavenProject> reactorProjects, boolean dryRun )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        branch( releaseDescriptor, releaseEnvironment, reactorProjects, dryRun, null );
-    }
-
-    @Override
-    public void branch( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                        List<MavenProject> reactorProjects, boolean dryRun, ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        ReleaseBranchRequest branchRequest = new ReleaseBranchRequest();
-        branchRequest.setReleaseDescriptor( releaseDescriptor );
-        branchRequest.setReleaseEnvironment( releaseEnvironment );
-        branchRequest.setReactorProjects( reactorProjects );
-        branchRequest.setDryRun( dryRun );
-        branchRequest.setReleaseManagerListener( listener );
-
-        branch( branchRequest );
-    }
-
-    @Override
     public void branch( ReleaseBranchRequest branchRequest )
         throws ReleaseExecutionException, ReleaseFailureException
     {
@@ -509,28 +360,13 @@ public class DefaultReleaseManager
 
         if ( !dryRun )
         {
-            clean( releaseDescriptor,
-                   branchRequest.getReleaseManagerListener(),
-                   branchRequest.getReactorProjects() );
+            clean( branchRequest );
         }
 
         updateListener( branchRequest.getReleaseManagerListener(), "branch", GOAL_END );
     }
 
     @Override
-    public void updateVersions( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                                List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        ReleaseUpdateVersionsRequest updateVersionsRequest = new ReleaseUpdateVersionsRequest();
-        updateVersionsRequest.setReleaseDescriptor( releaseDescriptor );
-        updateVersionsRequest.setReleaseEnvironment( releaseEnvironment );
-        updateVersionsRequest.setReactorProjects( reactorProjects );
-
-        updateVersions( updateVersionsRequest );
-    }
-
-    @Override
     public void updateVersions( ReleaseUpdateVersionsRequest updateVersionsRequest )
         throws ReleaseExecutionException, ReleaseFailureException
     {
@@ -555,9 +391,7 @@ public class DefaultReleaseManager
             updateListener( updateVersionsRequest.getReleaseManagerListener(), name, PHASE_END );
         }
 
-        clean( releaseDescriptor,
-               updateVersionsRequest.getReleaseManagerListener(),
-               updateVersionsRequest.getReactorProjects() );
+        clean( updateVersionsRequest );
 
         updateListener( updateVersionsRequest.getReleaseManagerListener(), "updateVersions", GOAL_END );
     }
@@ -603,14 +437,13 @@ public class DefaultReleaseManager
         }
     }
 
-    @Override
-    public void clean( ReleaseDescriptor releaseDescriptor, ReleaseManagerListener listener,
-                       List<MavenProject> reactorProjects )
+    
+    protected void clean( AbstractReleaseRequest releaseRequest  )
     {
         ReleaseCleanRequest cleanRequest = new ReleaseCleanRequest();
-        cleanRequest.setReleaseDescriptor( releaseDescriptor );
-        cleanRequest.setReleaseManagerListener( listener );
-        cleanRequest.setReactorProjects( reactorProjects );
+        cleanRequest.setReleaseDescriptor( releaseRequest.getReleaseDescriptor() );
+        cleanRequest.setReleaseManagerListener( releaseRequest.getReleaseManagerListener() );
+        cleanRequest.setReactorProjects( releaseRequest.getReactorProjects() );
 
         clean( cleanRequest );
     }
@@ -714,103 +547,4 @@ public class DefaultReleaseManager
 
         result.setResultCode( ReleaseResult.ERROR );
     }
-
-    @Override
-    public void branch( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                        boolean dryRun )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        branch( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects, dryRun );
-    }
-
-    @Override
-    public void branch( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                        boolean dryRun, ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        branch( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects, dryRun,
-                listener );
-    }
-
-    @Override
-    public void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        perform( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects );
-    }
-
-    @Override
-    public void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                         ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        perform( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects,
-                 listener );
-    }
-
-    @Override
-    public void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                         boolean clean )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        perform( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects, clean );
-    }
-
-    @Override
-    public ReleaseResult performWithResult( ReleaseDescriptor releaseDescriptor, Settings settings,
-                                            List<MavenProject> reactorProjects, ReleaseManagerListener listener )
-    {
-        return performWithResult( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ),
-                                  reactorProjects, listener );
-    }
-
-    @Override
-    public void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        prepare( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects );
-    }
-
-    @Override
-    public void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                         boolean resume, boolean dryRun )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        prepare( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects, resume,
-                 dryRun );
-    }
-
-    @Override
-    public void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                         boolean resume, boolean dryRun, ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        prepare( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects, resume,
-                 dryRun, listener );
-    }
-
-    @Override
-    public ReleaseResult prepareWithResult( ReleaseDescriptor releaseDescriptor, Settings settings,
-                                            List<MavenProject> reactorProjects, boolean resume, boolean dryRun,
-                                            ReleaseManagerListener listener )
-    {
-        return prepareWithResult( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ),
-                                  reactorProjects, resume, dryRun, listener );
-    }
-
-    @Override
-    public void rollback( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                          ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        rollback( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects,
-                  listener );
-    }
-
-    @Override
-    public void rollback( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException
-    {
-        rollback( releaseDescriptor, new DefaultReleaseEnvironment().setSettings( settings ), reactorProjects, null );
-    }
 }
\ No newline at end of file
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java
index 97e0a43..d8ceb56 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/ReleaseManager.java
@@ -19,13 +19,6 @@ package org.apache.maven.shared.release;
  * under the License.
  */
 
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.settings.Settings;
-import org.apache.maven.shared.release.config.ReleaseDescriptor;
-import org.apache.maven.shared.release.env.ReleaseEnvironment;
-
-import java.util.List;
-
 /**
  * Release management classes.
  *
@@ -34,73 +27,6 @@ import java.util.List;
 public interface ReleaseManager
 {
     /**
-     * The Plexus role.
-     */
-    String ROLE = ReleaseManager.class.getName();
-
-    /**
-     * Prepare a release.
-     *
-     * @param releaseDescriptor the configuration to pass to the preparation steps
-     * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
-     * @param reactorProjects   the reactor projects
-     * @throws ReleaseExecutionException if there is a problem performing the release
-     * @throws ReleaseFailureException   if there is a problem performing the release
-     */
-    void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                  List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Prepare a release.
-     *
-     * @param releaseDescriptor the configuration to pass to the preparation steps
-     * @param settings          the settings.xml configuration
-     * @param reactorProjects   the reactor projects
-     * @throws ReleaseExecutionException if there is a problem performing the release
-     * @throws ReleaseFailureException   if there is a problem performing the release
-     *
-     * @deprecated Use {@link ReleaseManager#prepare(ReleaseDescriptor, ReleaseEnvironment, List)} instead.
-     */
-    @Deprecated
-    void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Prepare a release.
-     *
-     * @param releaseDescriptor the configuration to pass to the preparation steps
-     * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
-     * @param reactorProjects   the reactor projects
-     * @param resume            resume a previous release, if the properties file exists
-     * @param dryRun            do not commit any changes to the file system or SCM
-     * @throws ReleaseExecutionException if there is a problem performing the release
-     * @throws ReleaseFailureException   if there is a problem performing the release
-     */
-    void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                  List<MavenProject> reactorProjects, boolean resume, boolean dryRun )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Prepare a release.
-     *
-     * @param releaseDescriptor the configuration to pass to the preparation steps
-     * @param settings          the settings.xml configuration
-     * @param reactorProjects   the reactor projects
-     * @param resume            resume a previous release, if the properties file exists
-     * @param dryRun            do not commit any changes to the file system or SCM
-     * @throws ReleaseExecutionException if there is a problem performing the release
-     * @throws ReleaseFailureException   if there is a problem performing the release
-     *
-     * @deprecated Use {@link ReleaseManager#prepare(ReleaseDescriptor, ReleaseEnvironment, List, boolean, boolean)}
-     * instead.
-     */
-    @Deprecated
-    void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                  boolean resume, boolean dryRun )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
      * Prepare a release.
      *
      * @param prepareRequest             all prepare arguments
@@ -110,139 +36,9 @@ public interface ReleaseManager
      */
     void prepare( ReleasePrepareRequest prepareRequest ) throws ReleaseExecutionException, ReleaseFailureException;
 
-    /**
-     * Prepare a release.
-     *
-     * @param releaseDescriptor the configuration to pass to the preparation steps
-     * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
-     * @param reactorProjects   the reactor projects
-     * @param resume            resume a previous release, if the properties file exists
-     * @param dryRun            do not commit any changes to the file system or SCM
-     * @param listener          the listener
-     * @throws ReleaseExecutionException if there is a problem performing the release
-     * @throws ReleaseFailureException   if there is a problem performing the release
-     */
-    void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                  List<MavenProject> reactorProjects, boolean resume, boolean dryRun, ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Prepare a release.
-     *
-     * @param releaseDescriptor the configuration to pass to the preparation steps
-     * @param settings          the settings.xml configuration
-     * @param reactorProjects   the reactor projects
-     * @param resume            resume a previous release, if the properties file exists
-     * @param dryRun            do not commit any changes to the file system or SCM
-     * @param listener          the listener
-     * @throws ReleaseExecutionException if there is a problem performing the release
-     * @throws ReleaseFailureException   if there is a problem performing the release
-     *
-     * @deprecated Use {@link ReleaseManager#prepare(ReleaseDescriptor, ReleaseEnvironment, List, boolean, boolean,
-     * ReleaseManagerListener)} instead.
-     */
-    @Deprecated
-    void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                  boolean resume, boolean dryRun, ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    ReleaseResult prepareWithResult( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                                     List<MavenProject> reactorProjects, boolean resume, boolean dryRun,
-                                     ReleaseManagerListener listener );
-
-    /**
-     * @deprecated Use {@link ReleaseManager#prepareWithResult(ReleaseDescriptor, ReleaseEnvironment, List, boolean,
-     * boolean, ReleaseManagerListener)} instead.
-     */
-    @Deprecated
-    ReleaseResult prepareWithResult( ReleaseDescriptor releaseDescriptor, Settings settings,
-                                     List<MavenProject> reactorProjects, boolean resume, boolean dryRun,
-                                     ReleaseManagerListener listener );
+    ReleaseResult prepareWithResult( ReleasePrepareRequest prepareRequest );
 
-    /**
-     * Perform a release.
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
-     * @param reactorProjects   the reactor projects
-     * @throws ReleaseExecutionException if there is a problem performing the release
-     * @throws ReleaseFailureException   if there is a problem performing the release
-     */
-    void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                  List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Perform a release.
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param settings          the settings.xml configuration
-     * @param reactorProjects   the reactor projects
-     * @throws ReleaseExecutionException if there is a problem performing the release
-     * @throws ReleaseFailureException   if there is a problem performing the release
-     *
-     * @deprecated Use {@link ReleaseManager#perform(ReleaseDescriptor, ReleaseEnvironment, List)} instead
-     */
-    @Deprecated
-    void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Perform a release.
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
-     * @param reactorProjects   the reactor projects
-     * @param listener          the listener
-     * @throws ReleaseExecutionException if there is a problem performing the release
-     * @throws ReleaseFailureException   if there is a problem performing the release
-     */
-    void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                  List<MavenProject> reactorProjects, ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Perform a release.
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param settings          the settings.xml configuration
-     * @param reactorProjects   the reactor projects
-     * @param listener          the listener
-     * @throws ReleaseExecutionException if there is a problem performing the release
-     * @throws ReleaseFailureException   if there is a problem performing the release
-     *
-     * @deprecated Use {@link ReleaseManager#perform(ReleaseDescriptor, ReleaseEnvironment, List,
-     * ReleaseManagerListener)} instead.
-     */
-    @Deprecated
-    void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                  ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    ReleaseResult performWithResult( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                                     List<MavenProject> reactorProjects, ReleaseManagerListener listener );
-
-    /**
-     * @deprecated Use {@link ReleaseManager#performWithResult(ReleaseDescriptor, ReleaseEnvironment, List,
-     * ReleaseManagerListener)} instead.
-     */
-    @Deprecated
-    ReleaseResult performWithResult( ReleaseDescriptor releaseDescriptor, Settings settings,
-                                     List<MavenProject> reactorProjects, ReleaseManagerListener listener );
-
-    /**
-     * Perform a release, and optionally cleanup.
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
-     * @param reactorProjects   the reactor projects
-     * @param clean             flag to clean the release after perform
-     * @throws ReleaseExecutionException if there is a problem performing the release
-     * @throws ReleaseFailureException   if there is a problem performing the release
-     */
-    void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                  List<MavenProject> reactorProjects, boolean clean )
-        throws ReleaseExecutionException, ReleaseFailureException;
+    ReleaseResult performWithResult( ReleasePerformRequest performRequest );
 
     /**
      * Perform a release
@@ -256,32 +52,6 @@ public interface ReleaseManager
         throws ReleaseExecutionException, ReleaseFailureException;
 
     /**
-     * Perform a release, and optionally cleanup.
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param settings          the settings.xml configuration
-     * @param reactorProjects   the reactor projects
-     * @param clean             flag to clean the release after perform
-     * @throws ReleaseExecutionException if there is a problem performing the release
-     * @throws ReleaseFailureException   if there is a problem performing the release
-     *
-     * @deprecated Use {@link ReleaseManager#perform(ReleaseDescriptor, ReleaseEnvironment, List, boolean)} instead.
-     */
-    @Deprecated
-    void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                  boolean clean )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Clean a release.
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param reactorProjects   the reactor projects
-     */
-    void clean( ReleaseDescriptor releaseDescriptor, ReleaseManagerListener listener,
-                List<MavenProject> reactorProjects );
-
-    /**
      * Clean a release.
      *
      * @param cleanRequest all clean arguments
@@ -292,66 +62,6 @@ public interface ReleaseManager
     /**
      * Rollback changes made by the previous release
      *
-     * @param releaseDescriptor the configuration to use for release
-     * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
-     * @param reactorProjects   the reactor projects
-     * @throws ReleaseExecutionException if there is a problem during release rollback
-     * @throws ReleaseFailureException   if there is a problem during release rollback
-     */
-    void rollback( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                   List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Rollback changes made by the previous release
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param settings          the settings.xml configuration
-     * @param reactorProjects   the reactor projects
-     * @throws ReleaseExecutionException if there is a problem during release rollback
-     * @throws ReleaseFailureException   if there is a problem during release rollback
-     *
-     * @deprecated Use {@link ReleaseManager#rollback(ReleaseDescriptor, ReleaseEnvironment, List)} instead.
-     */
-    @Deprecated
-    void rollback( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Rollback changes made by the previous release
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
-     * @param reactorProjects   the reactor projects
-     * @param listener          the listener
-     * @throws ReleaseExecutionException if there is a problem during release rollback
-     * @throws ReleaseFailureException   if there is a problem during release rollback
-     */
-    void rollback( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                   List<MavenProject> reactorProjects, ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Rollback changes made by the previous release
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param settings          the settings.xml configuration
-     * @param reactorProjects   the reactor projects
-     * @param listener          the listener
-     * @throws ReleaseExecutionException if there is a problem during release rollback
-     * @throws ReleaseFailureException   if there is a problem during release rollback
-     *
-     * @deprecated Use {@link ReleaseManager#rollback(ReleaseDescriptor, ReleaseEnvironment, List,
-     * ReleaseManagerListener)} instead.
-     */
-    @Deprecated
-    void rollback( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                   ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Rollback changes made by the previous release
-     *
      * @param rollbackRequest            all rollback arguments
      * @throws ReleaseExecutionException if there is a problem during release rollback
      * @throws ReleaseFailureException   if there is a problem during release rollback
@@ -363,71 +73,6 @@ public interface ReleaseManager
     /**
      * Branch a project
      *
-     * @param releaseDescriptor the configuration to use for release
-     * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
-     * @param reactorProjects   the reactor projects
-     * @param dryRun            do not commit any changes to the file system or SCM
-     * @throws ReleaseExecutionException if there is a problem during release branch
-     * @throws ReleaseFailureException   if there is a problem during release branch
-     */
-    void branch( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                 List<MavenProject> reactorProjects, boolean dryRun )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Branch a project
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param settings          the settings.xml configuration
-     * @param reactorProjects   the reactor projects
-     * @param dryRun            do not commit any changes to the file system or SCM
-     * @throws ReleaseExecutionException if there is a problem during release branch
-     * @throws ReleaseFailureException   if there is a problem during release branch
-     *
-     * @deprecated Use {@link ReleaseManager#branch(ReleaseDescriptor, ReleaseEnvironment, List, boolean)} instead.
-     */
-    @Deprecated
-    void branch( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                 boolean dryRun )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Branch a project
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
-     * @param reactorProjects   the reactor projects
-     * @param dryRun            do not commit any changes to the file system or SCM
-     * @param listener          the listener
-     * @throws ReleaseExecutionException if there is a problem during release branch
-     * @throws ReleaseFailureException   if there is a problem during release branch
-     */
-    void branch( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                 List<MavenProject> reactorProjects, boolean dryRun, ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Branch a project
-     *
-     * @param releaseDescriptor the configuration to use for release
-     * @param settings          the settings.xml configuration
-     * @param reactorProjects   the reactor projects
-     * @param dryRun            do not commit any changes to the file system or SCM
-     * @param listener          the listener
-     * @throws ReleaseExecutionException if there is a problem during release branch
-     * @throws ReleaseFailureException   if there is a problem during release branch
-     *
-     * @deprecated Use {@link ReleaseManager#branch(ReleaseDescriptor, ReleaseEnvironment, List, boolean,
-     * ReleaseManagerListener)} instead.
-     */
-    @Deprecated
-    void branch( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
-                 boolean dryRun, ReleaseManagerListener listener )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Branch a project
-     *
      * @param branchRequest              all branch arguments
      * @throws ReleaseExecutionException if there is a problem during release branch
      * @throws ReleaseFailureException   if there is a problem during release branch
@@ -438,19 +83,6 @@ public interface ReleaseManager
     /**
      * Update version numbers for a project
      *
-     * @param releaseDescriptor the configuration to use for release
-     * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
-     * @param reactorProjects   the reactor projects
-     * @throws ReleaseExecutionException if there is a problem during update versions
-     * @throws ReleaseFailureException   if there is a problem during update versions
-     */
-    void updateVersions( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
-                         List<MavenProject> reactorProjects )
-        throws ReleaseExecutionException, ReleaseFailureException;
-
-    /**
-     * Update version numbers for a project
-     *
      * @param updateVersionsRequest      all update versions arguments
      * @throws ReleaseExecutionException if there is a problem during update versions
      * @throws ReleaseFailureException   if there is a problem during update versions
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java
index 28bb32e..43a935a 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/DefaultReleaseManagerTest.java
@@ -49,7 +49,6 @@ import org.apache.maven.shared.release.config.ReleaseDescriptorStore;
 import org.apache.maven.shared.release.config.ReleaseDescriptorStoreException;
 import org.apache.maven.shared.release.config.ReleaseDescriptorStoreStub;
 import org.apache.maven.shared.release.env.DefaultReleaseEnvironment;
-import org.apache.maven.shared.release.env.ReleaseEnvironment;
 import org.apache.maven.shared.release.phase.ReleasePhase;
 import org.apache.maven.shared.release.phase.ReleasePhaseStub;
 import org.apache.maven.shared.release.scm.ReleaseScmCommandException;
@@ -79,12 +78,16 @@ public class DefaultReleaseManagerTest
     public void testPrepareNoCompletedPhase()
         throws Exception
     {
-        ReleaseManager releaseManager = (ReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptor releaseDescriptor = configStore.getReleaseConfiguration();
         releaseDescriptor.setCompletedPhase( null );
 
-        releaseManager.prepare( new ReleaseDescriptor(), new DefaultReleaseEnvironment(), null );
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( releaseDescriptor );
+        prepareRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        
+        releaseManager.prepare( prepareRequest );
 
         ReleasePhaseStub phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "step1" );
         assertTrue( "step1 executed", phase.isExecuted() );
@@ -100,12 +103,16 @@ public class DefaultReleaseManagerTest
     public void testPrepareCompletedPhase()
         throws Exception
     {
-        ReleaseManager releaseManager = (ReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptor releaseDescriptor = configStore.getReleaseConfiguration();
         releaseDescriptor.setCompletedPhase( "step1" );
 
-        releaseManager.prepare( new ReleaseDescriptor(), new DefaultReleaseEnvironment(), null );
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( releaseDescriptor );
+        prepareRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        
+        releaseManager.prepare( prepareRequest );
 
         ReleasePhaseStub phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "step1" );
         assertFalse( "step1 not executed", phase.isExecuted() );
@@ -121,15 +128,21 @@ public class DefaultReleaseManagerTest
     public void testPrepareCompletedPhaseNoResume()
         throws Exception
     {
-        ReleaseManager releaseManager = (ReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptor releaseDescriptor = configStore.getReleaseConfiguration();
         releaseDescriptor.setCompletedPhase( "step1" );
 
-        releaseManager.prepare( new ReleaseDescriptor(), new DefaultReleaseEnvironment(), null, false, false );
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( releaseDescriptor );
+        prepareRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        prepareRequest.setDryRun( false );
+        prepareRequest.setResume( false );
+        
+        releaseManager.prepare( prepareRequest );
 
         ReleasePhaseStub phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "step1" );
-        assertTrue( "step1 executed", phase.isExecuted() );
+        assertFalse( "step1 executed", phase.isExecuted() );
         assertFalse( "step1 not simulated", phase.isSimulated() );
         phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "step2" );
         assertTrue( "step2 executed", phase.isExecuted() );
@@ -142,12 +155,16 @@ public class DefaultReleaseManagerTest
     public void testPrepareCompletedAllPhases()
         throws Exception
     {
-        ReleaseManager releaseManager = (ReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptor releaseDescriptor = configStore.getReleaseConfiguration();
         releaseDescriptor.setCompletedPhase( "step3" );
+        
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( releaseDescriptor );
+        prepareRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
 
-        releaseManager.prepare( new ReleaseDescriptor(), new DefaultReleaseEnvironment(), null );
+        releaseManager.prepare( prepareRequest );
 
         ReleasePhaseStub phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "step1" );
         assertFalse( "step1 not executed", phase.isExecuted() );
@@ -163,12 +180,16 @@ public class DefaultReleaseManagerTest
     public void testPrepareInvalidCompletedPhase()
         throws Exception
     {
-        ReleaseManager releaseManager = (ReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptor releaseDescriptor = configStore.getReleaseConfiguration();
         releaseDescriptor.setCompletedPhase( "foo" );
 
-        releaseManager.prepare( new ReleaseDescriptor(), new DefaultReleaseEnvironment(), null );
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( releaseDescriptor );
+        prepareRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        
+        releaseManager.prepare( prepareRequest );
 
         ReleasePhaseStub phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "step1" );
         assertTrue( "step1 executed", phase.isExecuted() );
@@ -184,12 +205,18 @@ public class DefaultReleaseManagerTest
     public void testPrepareSimulateNoCompletedPhase()
         throws Exception
     {
-        ReleaseManager releaseManager = (ReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptor releaseDescriptor = configStore.getReleaseConfiguration();
         releaseDescriptor.setCompletedPhase( null );
 
-        releaseManager.prepare( new ReleaseDescriptor(), new DefaultReleaseEnvironment(), null, true, true );
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( releaseDescriptor );
+        prepareRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        prepareRequest.setDryRun( true );
+        prepareRequest.setResume( true );
+        
+        releaseManager.prepare( prepareRequest );
 
         ReleasePhaseStub phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "step1" );
         assertTrue( "step1 simulated", phase.isSimulated() );
@@ -205,12 +232,18 @@ public class DefaultReleaseManagerTest
     public void testPrepareSimulateCompletedPhase()
         throws Exception
     {
-        ReleaseManager releaseManager = (ReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptor releaseDescriptor = configStore.getReleaseConfiguration();
         releaseDescriptor.setCompletedPhase( "step1" );
 
-        releaseManager.prepare( new ReleaseDescriptor(), new DefaultReleaseEnvironment(), null, true, true );
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( releaseDescriptor );
+        prepareRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        prepareRequest.setDryRun( true );
+        prepareRequest.setResume( true );
+        
+        releaseManager.prepare( prepareRequest );
 
         ReleasePhaseStub phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "step1" );
         assertFalse( "step1 not simulated", phase.isSimulated() );
@@ -226,12 +259,18 @@ public class DefaultReleaseManagerTest
     public void testPrepareSimulateCompletedAllPhases()
         throws Exception
     {
-        ReleaseManager releaseManager = (ReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptor releaseDescriptor = configStore.getReleaseConfiguration();
         releaseDescriptor.setCompletedPhase( "step3" );
 
-        releaseManager.prepare( new ReleaseDescriptor(), new DefaultReleaseEnvironment(), null, true, true );
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( releaseDescriptor );
+        prepareRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        prepareRequest.setDryRun( true );
+        prepareRequest.setResume( true );
+        
+        releaseManager.prepare( prepareRequest );
 
         ReleasePhaseStub phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "step1" );
         assertFalse( "step1 not simulated", phase.isSimulated() );
@@ -247,12 +286,18 @@ public class DefaultReleaseManagerTest
     public void testPrepareSimulateInvalidCompletedPhase()
         throws Exception
     {
-        ReleaseManager releaseManager = (ReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptor releaseDescriptor = configStore.getReleaseConfiguration();
         releaseDescriptor.setCompletedPhase( "foo" );
 
-        releaseManager.prepare( new ReleaseDescriptor(), new DefaultReleaseEnvironment(), null, true, true );
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( releaseDescriptor );
+        prepareRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        prepareRequest.setDryRun( true );
+        prepareRequest.setResume( true );
+        
+        releaseManager.prepare( prepareRequest );
 
         ReleasePhaseStub phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "step1" );
         assertTrue( "step1 simulated", phase.isSimulated() );
@@ -268,11 +313,14 @@ public class DefaultReleaseManagerTest
     public void testPrepareUnknownPhaseConfigured()
         throws Exception
     {
-        ReleaseManager releaseManager = (ReleaseManager) lookup( ReleaseManager.ROLE, "bad-phase-configured" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "bad-phase-configured" );
 
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( new ReleaseDescriptor() );
+        prepareRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
         try
         {
-            releaseManager.prepare( new ReleaseDescriptor(), new DefaultReleaseEnvironment(), null );
+            releaseManager.prepare( prepareRequest );
             fail( "Should have failed to find a phase" );
         }
         catch ( ReleaseExecutionException e )
@@ -289,17 +337,21 @@ public class DefaultReleaseManagerTest
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         releaseDescriptor.setWorkingDirectory( getTestFile( "target/working-directory" ).getAbsolutePath() );
 
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptorStore configStoreMock = mock( ReleaseDescriptorStore.class );
         when( configStoreMock.read( releaseDescriptor ) ).thenThrow( new ReleaseDescriptorStoreException( "message", new IOException( "ioExceptionMsg" ) ) );
 
         releaseManager.setConfigStore( configStoreMock );
+        
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( releaseDescriptor );
+        prepareRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
 
         // execute
         try
         {
-            releaseManager.prepare( releaseDescriptor, new DefaultReleaseEnvironment(), null );
+            releaseManager.prepare( prepareRequest );
             fail( "Should have failed to read configuration" );
         }
         catch ( ReleaseExecutionException e )
@@ -321,17 +373,23 @@ public class DefaultReleaseManagerTest
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         releaseDescriptor.setWorkingDirectory( getTestFile( "target/working-directory" ).getAbsolutePath() );
 
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptorStore configStoreMock = mock( ReleaseDescriptorStore.class );
         doThrow( new ReleaseDescriptorStoreException( "message", new IOException( "ioExceptionMsg" ) ) ).when( configStoreMock ).write( releaseDescriptor );
 
         releaseManager.setConfigStore( configStoreMock );
+        
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( releaseDescriptor );
+        prepareRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        prepareRequest.setDryRun( false );
+        prepareRequest.setResume( false );
 
         // execute
         try
         {
-            releaseManager.prepare( releaseDescriptor, new DefaultReleaseEnvironment(), null, false, false );
+            releaseManager.prepare( prepareRequest );
             fail( "Should have failed to read configuration" );
         }
         catch ( ReleaseExecutionException e )
@@ -353,14 +411,17 @@ public class DefaultReleaseManagerTest
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         releaseDescriptor.setWorkingDirectory( getTestFile( "target/working-directory" ).getAbsolutePath() );
 
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptorStore configStoreMock = mock( ReleaseDescriptorStore.class );
 
         releaseManager.setConfigStore( configStoreMock );
 
+        ReleaseCleanRequest cleanRequest = new ReleaseCleanRequest();
+        cleanRequest.setReleaseDescriptor( releaseDescriptor );
+        
         // execute
-        releaseManager.clean( releaseDescriptor, null, null );
+        releaseManager.clean( cleanRequest );
 
         // verify
         ReleasePhaseStub phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "step1" );
@@ -391,15 +452,20 @@ public class DefaultReleaseManagerTest
     public void testReleasePerformWithResult()
         throws Exception
     {
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         File checkoutDirectory = getTestFile( "target/checkout-directory" );
         releaseDescriptor.setCheckoutDirectory( checkoutDirectory.getAbsolutePath() );
+        
+        ReleasePerformRequest performRequest = new ReleasePerformRequest();
+        performRequest.setReleaseDescriptor( releaseDescriptor );
+        performRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        performRequest.setReactorProjects( createReactorProjects() );
+
+        ReleaseResult result = releaseManager.performWithResult( performRequest );
 
-        ReleaseResult result = releaseManager.performWithResult( releaseDescriptor, new DefaultReleaseEnvironment(),
-                                                                 createReactorProjects(), null );
         assertTrue( result.getOutput().length() > 0 );
     }
 
@@ -411,19 +477,23 @@ public class DefaultReleaseManagerTest
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         releaseDescriptor.setWorkingDirectory( getTestFile( "target/working-directory" ).getAbsolutePath() );
 
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptorStore configStoreMock = mock( ReleaseDescriptorStore.class );
         when( configStoreMock.read( releaseDescriptor ) ).thenThrow( new ReleaseDescriptorStoreException( "message", new IOException( "ioExceptionMsg" ) ) );
 
         releaseManager.setConfigStore( configStoreMock );
+        
+        ReleasePerformRequest performRequest = new ReleasePerformRequest();
+        performRequest.setReleaseDescriptor( releaseDescriptor );
+        performRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
 
         // execute
         try
         {
             releaseDescriptor.setUseReleaseProfile( false );
 
-            releaseManager.perform( releaseDescriptor, new DefaultReleaseEnvironment(), null );
+            releaseManager.perform( performRequest );
             fail( "Should have failed to read configuration" );
         }
         catch ( ReleaseExecutionException e )
@@ -444,17 +514,21 @@ public class DefaultReleaseManagerTest
         releaseDescriptor.setScmSourceUrl( "scm-url" );
         releaseDescriptor.setWorkingDirectory( getTestFile( "target/working-directory" ).getAbsolutePath() );
 
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptorStoreStub configStore = new ReleaseDescriptorStoreStub();
         releaseDescriptor.setCompletedPhase( "scm-tag" );
         releaseManager.setConfigStore( configStore );
 
+        ReleasePerformRequest performRequest = new ReleasePerformRequest();
+        performRequest.setReleaseDescriptor( releaseDescriptor );
+        performRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+
         try
         {
             releaseDescriptor.setUseReleaseProfile( false );
 
-            releaseManager.perform( releaseDescriptor, new DefaultReleaseEnvironment(), null );
+            releaseManager.perform( performRequest );
             fail( "Should have failed to perform" );
         }
         catch ( ReleaseFailureException e )
@@ -481,7 +555,7 @@ public class DefaultReleaseManagerTest
         releaseDescriptor.setWorkingDirectory( getTestFile( "target/working-directory" ).getAbsolutePath() );
         performRequest.setReleaseDescriptor( releaseDescriptor );
 
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         // test
         releaseManager.perform( performRequest );
@@ -507,13 +581,17 @@ public class DefaultReleaseManagerTest
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setWorkingDirectory( getTestFile( "target/test/checkout" ).getAbsolutePath() );
 
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
+        ReleasePerformRequest performRequest = new ReleasePerformRequest();
+        performRequest.setReleaseDescriptor( releaseDescriptor );
+        performRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        
         try
         {
             releaseDescriptor.setUseReleaseProfile( false );
 
-            releaseManager.perform( releaseDescriptor, new DefaultReleaseEnvironment(), null );
+            releaseManager.perform( performRequest );
 
             fail( "perform should have failed" );
         }
@@ -527,7 +605,7 @@ public class DefaultReleaseManagerTest
         throws Exception
     {
         // prepare
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setScmSourceUrl( "scm-url" );
@@ -544,10 +622,15 @@ public class DefaultReleaseManagerTest
         ScmManagerStub stub = (ScmManagerStub) lookup( ScmManager.ROLE );
         stub.setScmProvider( scmProviderMock );
 
+        ReleasePerformRequest performRequest = new ReleasePerformRequest();
+        performRequest.setReleaseDescriptor( releaseDescriptor );
+        performRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        performRequest.setReactorProjects( createReactorProjects() );
+
         // execute
         try
         {
-            releaseManager.perform( releaseDescriptor, new DefaultReleaseEnvironment(), createReactorProjects() );
+            releaseManager.perform( performRequest );
 
             fail( "commit should have failed" );
         }
@@ -565,7 +648,7 @@ public class DefaultReleaseManagerTest
     public void testScmResultFailure()
         throws Exception
     {
-        DefaultReleaseManager releaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
 
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setScmSourceUrl( "scm-url" );
@@ -577,10 +660,15 @@ public class DefaultReleaseManagerTest
             (ScmProviderStub) scmManager.getProviderByUrl( releaseDescriptor.getScmSourceUrl() );
 
         providerStub.setCheckOutScmResult( new CheckOutScmResult( "", "", "", false ) );
+        
+        ReleasePerformRequest performRequest = new ReleasePerformRequest();
+        performRequest.setReleaseDescriptor( releaseDescriptor );
+        performRequest.setReleaseEnvironment( new DefaultReleaseEnvironment() );
+        performRequest.setReactorProjects( createReactorProjects() );
 
         try
         {
-            releaseManager.perform( releaseDescriptor, new DefaultReleaseEnvironment(), createReactorProjects() );
+            releaseManager.perform( performRequest );
 
             fail( "commit should have failed" );
         }
@@ -619,9 +707,12 @@ public class DefaultReleaseManagerTest
     public void testRollbackCall()
         throws Exception
     {
-        DefaultReleaseManager defaultReleaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
+        
+        ReleaseRollbackRequest rollbackRequest = new ReleaseRollbackRequest();
+        rollbackRequest.setReleaseDescriptor( configStore.getReleaseConfiguration() );
 
-        defaultReleaseManager.rollback( configStore.getReleaseConfiguration(), (ReleaseEnvironment) null, null );
+        releaseManager.rollback( rollbackRequest );
 
         ReleasePhaseStub phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "rollbackPhase1" );
 
@@ -633,9 +724,12 @@ public class DefaultReleaseManagerTest
     public void testUpdateVersionsCall()
         throws Exception
     {
-        DefaultReleaseManager defaultReleaseManager = (DefaultReleaseManager) lookup( ReleaseManager.ROLE, "test" );
+        ReleaseManager releaseManager = lookup( ReleaseManager.class, "test" );
+        
+        ReleaseUpdateVersionsRequest updateVersionsRequest = new ReleaseUpdateVersionsRequest();
+        updateVersionsRequest.setReleaseDescriptor( configStore.getReleaseConfiguration() );
 
-        defaultReleaseManager.updateVersions( configStore.getReleaseConfiguration(), null, null );
+        releaseManager.updateVersions( updateVersionsRequest );
 
         ReleasePhaseStub phase = (ReleasePhaseStub) lookup( ReleasePhase.ROLE, "updateVersionsPhase1" );
 
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java
index 1ba1a46..14829ea 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java
@@ -25,6 +25,7 @@ import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.shared.release.ReleaseBranchRequest;
 import org.apache.maven.shared.release.ReleaseExecutionException;
 import org.apache.maven.shared.release.ReleaseFailureException;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
@@ -251,7 +252,13 @@ public class BranchReleaseMojo
 
         try
         {
-            releaseManager.branch( config, getReleaseEnvironment(), getReactorProjects(), dryRun );
+            ReleaseBranchRequest branchRequest = new ReleaseBranchRequest();
+            branchRequest.setReleaseDescriptor( config );
+            branchRequest.setReleaseEnvironment( getReleaseEnvironment() );
+            branchRequest.setReactorProjects( getReactorProjects() );
+            branchRequest.setDryRun( dryRun );
+
+            releaseManager.branch( branchRequest );
         }
         catch ( ReleaseExecutionException e )
         {
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java
index bd77143..4ef5af8 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/CleanReleaseMojo.java
@@ -22,6 +22,7 @@ package org.apache.maven.plugins.release;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.shared.release.ReleaseCleanRequest;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
 
 /**
@@ -44,7 +45,12 @@ public class CleanReleaseMojo
     {
         ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
         releaseDescriptor.setWorkingDirectory( getBasedir().getAbsolutePath() );
-        releaseManager.clean( releaseDescriptor, null, getReactorProjects() );
+
+        ReleaseCleanRequest cleanRequest = new ReleaseCleanRequest();
+        cleanRequest.setReleaseDescriptor( releaseDescriptor );
+        cleanRequest.setReactorProjects( getReactorProjects() );
+        
+        releaseManager.clean( cleanRequest );
     }
 
 }
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
index 80dc9bd..a73962d 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
@@ -27,6 +27,7 @@ import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.shared.release.ReleaseExecutionException;
 import org.apache.maven.shared.release.ReleaseFailureException;
+import org.apache.maven.shared.release.ReleasePrepareRequest;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
 import org.apache.maven.shared.release.config.ReleaseUtils;
 
@@ -292,10 +293,17 @@ public class PrepareReleaseMojo
         ReleaseDescriptor sysPropertiesConfig =
             ReleaseUtils.copyPropertiesToReleaseDescriptor( session.getExecutionProperties() );
         mergeCommandLineConfig( config, sysPropertiesConfig );
+        
+        ReleasePrepareRequest prepareRequest = new ReleasePrepareRequest();
+        prepareRequest.setReleaseDescriptor( config );
+        prepareRequest.setReleaseEnvironment( getReleaseEnvironment() );
+        prepareRequest.setReactorProjects( getReactorProjects() );
+        prepareRequest.setResume( resume );
+        prepareRequest.setDryRun( dryRun );
 
         try
         {
-            releaseManager.prepare( config, getReleaseEnvironment(), getReactorProjects(), resume, dryRun );
+            releaseManager.prepare( prepareRequest );
         }
         catch ( ReleaseExecutionException e )
         {
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/RollbackReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/RollbackReleaseMojo.java
index 57f1a05..cefcbbe 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/RollbackReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/RollbackReleaseMojo.java
@@ -24,7 +24,7 @@ import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.shared.release.ReleaseExecutionException;
 import org.apache.maven.shared.release.ReleaseFailureException;
-import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.ReleaseRollbackRequest;
 
 /**
  * Rollback changes made by a previous release. This requires that the previous release descriptor
@@ -46,11 +46,14 @@ public class RollbackReleaseMojo
     {
         super.execute();
 
-        ReleaseDescriptor config = createReleaseDescriptor();
-
         try
         {
-            releaseManager.rollback( config, getReleaseEnvironment(), getReactorProjects() );
+            ReleaseRollbackRequest rollbackRequest = new ReleaseRollbackRequest();
+            rollbackRequest.setReleaseDescriptor( createReleaseDescriptor() );
+            rollbackRequest.setReleaseEnvironment( getReleaseEnvironment() );
+            rollbackRequest.setReactorProjects( getReactorProjects()  );
+            
+            releaseManager.rollback( rollbackRequest );
         }
         catch ( ReleaseExecutionException e )
         {
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/UpdateVersionsMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/UpdateVersionsMojo.java
index c67ef62..242ed2b 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/UpdateVersionsMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/UpdateVersionsMojo.java
@@ -26,6 +26,7 @@ import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.shared.release.ReleaseExecutionException;
 import org.apache.maven.shared.release.ReleaseFailureException;
+import org.apache.maven.shared.release.ReleaseUpdateVersionsRequest;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
 import org.apache.maven.shared.release.config.ReleaseUtils;
 
@@ -115,7 +116,12 @@ public class UpdateVersionsMojo
 
         try
         {
-            releaseManager.updateVersions( config, getReleaseEnvironment(), getReactorProjects() );
+            ReleaseUpdateVersionsRequest updateVersionsRequest = new ReleaseUpdateVersionsRequest();
+            updateVersionsRequest.setReleaseDescriptor( config );
+            updateVersionsRequest.setReleaseEnvironment( getReleaseEnvironment() );
+            updateVersionsRequest.setReactorProjects( getReactorProjects() );
+
+            releaseManager.updateVersions( updateVersionsRequest );
         }
         catch ( ReleaseExecutionException e )
         {
diff --git a/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/CleanReleaseMojoTest.java b/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/CleanReleaseMojoTest.java
index f3438e5..6cdd62d 100644
--- a/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/CleanReleaseMojoTest.java
+++ b/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/CleanReleaseMojoTest.java
@@ -28,8 +28,10 @@ import java.io.File;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.apache.maven.shared.release.ReleaseCleanRequest;
 import org.apache.maven.shared.release.ReleaseManager;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.mockito.ArgumentCaptor;
 
 /**
  * Test release:clean.
@@ -58,9 +60,8 @@ public class CleanReleaseMojoTest
         throws MojoFailureException, MojoExecutionException
     {
         // prepare
-        ReleaseDescriptor descriptor = new ReleaseDescriptor();
-        descriptor.setWorkingDirectory( workingDirectory.getAbsolutePath() );
-
+        ArgumentCaptor<ReleaseCleanRequest> request = ArgumentCaptor.forClass( ReleaseCleanRequest.class );
+        
         ReleaseManager mock = mock( ReleaseManager.class );
         mojo.setReleaseManager( mock );
 
@@ -68,7 +69,12 @@ public class CleanReleaseMojoTest
         mojo.execute();
 
         // verify
-        verify( mock ).clean( descriptor, null, mojo.getReactorProjects() );
+        verify( mock ).clean( request.capture() );
+        
+        assertEquals( workingDirectory.getAbsolutePath(),
+                      request.getValue().getReleaseDescriptor().getWorkingDirectory() );
+        assertEquals( mojo.getReactorProjects(), request.getValue().getReactorProjects() );
+        
         verifyNoMoreInteractions( mock );
     }
 }
\ No newline at end of file
diff --git a/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PrepareReleaseMojoTest.java b/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PrepareReleaseMojoTest.java
index 299d901..76525d7 100644
--- a/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PrepareReleaseMojoTest.java
+++ b/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PrepareReleaseMojoTest.java
@@ -19,6 +19,12 @@ package org.apache.maven.plugins.release;
  * under the License.
  */
 
+
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
 import static org.mockito.Matchers.eq;
 import static org.mockito.Matchers.isA;
 import static org.mockito.Matchers.isNull;
@@ -38,8 +44,10 @@ import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 import org.apache.maven.shared.release.ReleaseExecutionException;
 import org.apache.maven.shared.release.ReleaseFailureException;
 import org.apache.maven.shared.release.ReleaseManager;
+import org.apache.maven.shared.release.ReleasePrepareRequest;
 import org.apache.maven.shared.release.config.ReleaseDescriptor;
 import org.apache.maven.shared.release.env.ReleaseEnvironment;
+import org.mockito.ArgumentCaptor;
 
 /**
  * Test release:prepare.
@@ -55,7 +63,6 @@ public class PrepareReleaseMojoTest
         setVariableValueToObject( mojo, "updateWorkingCopyVersions", Boolean.TRUE );
     }
     
-    @SuppressWarnings( "unchecked" )
     public void testPrepare()
         throws Exception
     {
@@ -80,12 +87,18 @@ public class PrepareReleaseMojoTest
         // execute
         mojo.execute();
 
+        ArgumentCaptor<ReleasePrepareRequest> prepareRequest = ArgumentCaptor.forClass( ReleasePrepareRequest.class );
+        
         // verify
-        verify( mock ).prepare( eq( releaseDescriptor ), isA( ReleaseEnvironment.class ), isNull( List.class), eq( true ), eq( false ) );
-        assertTrue( true );
+        verify( mock ).prepare( prepareRequest.capture() );
+        
+        assertThat( prepareRequest.getValue().getReleaseDescriptor(), is( releaseDescriptor ) );
+        assertThat( prepareRequest.getValue().getReleaseEnvironment(), is(instanceOf( ReleaseEnvironment.class ) ) );
+        assertThat( prepareRequest.getValue().getReactorProjects(), is( nullValue() ) );
+        assertThat( prepareRequest.getValue().getResume(), is( true ) );
+        assertThat( prepareRequest.getValue().getDryRun(), is( false ) );
     }
 
-    @SuppressWarnings( "unchecked" )
     public void testPrepareWithExecutionException()
         throws Exception
     {
@@ -104,11 +117,7 @@ public class PrepareReleaseMojoTest
         releaseDescriptor.setUpdateDependencies( false );
         
         ReleaseManager mock = mock( ReleaseManager.class );
-        doThrow( new ReleaseExecutionException( "..." ) ).when( mock ).prepare( eq( releaseDescriptor ), 
-                                                                                isA( ReleaseEnvironment.class ), 
-                                                                                isNull( List.class), 
-                                                                                eq( true ), 
-                                                                                eq( false ) );
+        doThrow( new ReleaseExecutionException( "..." ) ).when( mock ).prepare( isA( ReleasePrepareRequest.class ) );
         mojo.setReleaseManager( mock );
 
         //execute
@@ -124,15 +133,10 @@ public class PrepareReleaseMojoTest
         }
         
         // verify
-        verify( mock ).prepare( eq( releaseDescriptor ), 
-                                isA( ReleaseEnvironment.class ), 
-                                isNull( List.class), 
-                                eq( true ), 
-                                eq( false ) );
+        verify( mock ).prepare( isA( ReleasePrepareRequest.class ) );
         verifyNoMoreInteractions( mock );
     }
 
-    @SuppressWarnings( "unchecked" )
     public void testPrepareWithExecutionFailure()
         throws Exception
     {
@@ -152,11 +156,7 @@ public class PrepareReleaseMojoTest
         
         ReleaseManager mock = mock( ReleaseManager.class );
         ReleaseFailureException cause = new ReleaseFailureException( "..." );
-        doThrow( cause ).when( mock ).prepare( eq( releaseDescriptor ), 
-                                               isA( ReleaseEnvironment.class ), 
-                                               isNull( List.class), 
-                                               eq( true ), 
-                                               eq( false ) );
+        doThrow( cause ).when( mock ).prepare( isA( ReleasePrepareRequest.class ) );
         mojo.setReleaseManager( mock );
 
         // execute
@@ -171,11 +171,7 @@ public class PrepareReleaseMojoTest
             assertEquals( "Check cause exists", cause, e.getCause() );
         }
         // verify
-        verify( mock ).prepare( eq( releaseDescriptor ), 
-                                isA( ReleaseEnvironment.class ), 
-                                isNull( List.class), 
-                                eq( true ), 
-                                eq( false ) );
+        verify( mock ).prepare( isA( ReleasePrepareRequest.class ) );
         verifyNoMoreInteractions( mock );
     }
 

-- 
To stop receiving notification emails like this one, please contact
['"commits@maven.apache.org" <co...@maven.apache.org>'].