You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/07/14 22:03:15 UTC
svn commit: r794043 - in /maven/components/trunk:
maven-core/src/main/java/org/apache/maven/
maven-core/src/main/java/org/apache/maven/execution/
maven-embedder/src/main/java/org/apache/maven/cli/
Author: bentmann
Date: Tue Jul 14 20:03:15 2009
New Revision: 794043
URL: http://svn.apache.org/viewvc?rev=794043&view=rev
Log:
[MNG-2576] Make Like Reactor Mode
Added:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/FilteredProjectDependencyGraph.java (with props)
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependencyGraph.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ProjectDependencyGraph.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ProjectSorter.java
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIRequestUtils.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=794043&r1=794042&r2=794043&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Tue Jul 14 20:03:15 2009
@@ -22,6 +22,7 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
@@ -36,6 +37,7 @@
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionResult;
import org.apache.maven.execution.MavenSession;
+import org.apache.maven.execution.ProjectDependencyGraph;
import org.apache.maven.execution.ProjectSorter;
import org.apache.maven.lifecycle.LifecycleExecutor;
import org.apache.maven.project.MavenProject;
@@ -140,14 +142,14 @@
}
try
- {
+ {
ProjectSorter projectSorter = new ProjectSorter( session.getProjects() );
- projects = projectSorter.getSortedProjects();
+ ProjectDependencyGraph projectDependencyGraph = createDependencyGraph( projectSorter, request );
- session.setProjects( projects );
+ session.setProjects( projectDependencyGraph.getSortedProjects() );
- session.setProjectDependencyGraph( new DefaultProjectDependencyGraph( projectSorter ) );
+ session.setProjectDependencyGraph( projectDependencyGraph );
}
catch ( CycleDetectedException e )
{
@@ -161,6 +163,10 @@
{
return processResult( result, e );
}
+ catch ( MavenExecutionException e )
+ {
+ return processResult( result, e );
+ }
// Desired order of precedence for local artifact repositories
//
@@ -293,6 +299,8 @@
for ( File file : files )
{
MavenProject project = projectBuilder.build( file, request.getProjectBuildingRequest() );
+
+ projects.add( project );
if ( ( project.getModules() != null ) && !project.getModules().isEmpty() && request.isRecursive() )
{
@@ -340,8 +348,6 @@
collectProjects( projects, moduleFiles, request );
}
-
- projects.add( project );
}
}
@@ -368,4 +374,90 @@
return logger;
}
+ private ProjectDependencyGraph createDependencyGraph( ProjectSorter sorter, MavenExecutionRequest request )
+ throws MavenExecutionException
+ {
+ ProjectDependencyGraph graph = new DefaultProjectDependencyGraph( sorter );
+
+ if ( !request.getSelectedProjects().isEmpty() )
+ {
+ File reactorDirectory = request.getPom().getParentFile().getAbsoluteFile();
+
+ Map<File, MavenProject> projectsByFile = new HashMap<File, MavenProject>();
+
+ for ( MavenProject project : sorter.getSortedProjects() )
+ {
+ projectsByFile.put( project.getFile(), project );
+ }
+
+ List<MavenProject> selectedProjects = new ArrayList<MavenProject>( request.getSelectedProjects().size() );
+
+ for ( String selectedProject : request.getSelectedProjects() )
+ {
+ File pomFile = new File( reactorDirectory, selectedProject );
+
+ if ( pomFile.isDirectory() )
+ {
+ pomFile = new File( pomFile, Maven.POMv4 );
+ }
+
+ MavenProject project = projectsByFile.get( pomFile );
+
+ if ( project != null )
+ {
+ selectedProjects.add( project );
+ }
+ else
+ {
+ throw new MavenExecutionException( "Could not find project in reactor: " + selectedProject,
+ request.getPom() );
+ }
+ }
+
+ boolean makeUpstream = false;
+ boolean makeDownstream = false;
+ if ( MavenExecutionRequest.REACTOR_MAKE_UPSTREAM.equals( request.getMakeBehavior() ) )
+ {
+ makeUpstream = true;
+ }
+ else if ( MavenExecutionRequest.REACTOR_MAKE_DOWNSTREAM.equals( request.getMakeBehavior() ) )
+ {
+ makeDownstream = true;
+ }
+ else if ( MavenExecutionRequest.REACTOR_MAKE_BOTH.equals( request.getMakeBehavior() ) )
+ {
+ makeUpstream = true;
+ makeDownstream = true;
+ }
+ else if ( StringUtils.isNotEmpty( request.getMakeBehavior() ) )
+ {
+ throw new MavenExecutionException( "Invalid reactor make behavior: " + request.getMakeBehavior(),
+ request.getPom() );
+ }
+
+ Collection<MavenProject> makeProjects = new LinkedHashSet<MavenProject>( selectedProjects );
+
+ if ( makeUpstream || makeDownstream )
+ {
+ for ( MavenProject selectedProject : selectedProjects )
+ {
+ if ( makeUpstream )
+ {
+ makeProjects.addAll( graph.getUpstreamProjects( selectedProject, true ) );
+ }
+ if ( makeDownstream )
+ {
+ makeProjects.addAll( graph.getDownstreamProjects( selectedProject, true ) );
+ }
+ }
+ }
+
+ // TODO: process resume from
+
+ graph = new FilteredProjectDependencyGraph( graph, makeProjects );
+ }
+
+ return graph;
+ }
+
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependencyGraph.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependencyGraph.java?rev=794043&r1=794042&r2=794043&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependencyGraph.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependencyGraph.java Tue Jul 14 20:03:15 2009
@@ -70,30 +70,62 @@
getDownstreamProjects( ProjectSorter.getId( project ), projectIds, transitive );
- List<MavenProject> projects = new ArrayList<MavenProject>();
+ return getProjects( projectIds );
+ }
- for ( MavenProject p : sorter.getSortedProjects() )
+ private void getDownstreamProjects( String projectId, Collection<String> projectIds, boolean transitive )
+ {
+ for ( String id : sorter.getDependents( projectId ) )
{
- if ( projectIds.contains( ProjectSorter.getId( p ) ) )
+ projectIds.add( id );
+
+ if ( transitive )
{
- projects.add( p );
+ getDownstreamProjects( id, projectIds, transitive );
}
}
+ }
- return projects;
+ public List<MavenProject> getUpstreamProjects( MavenProject project, boolean transitive )
+ {
+ if ( project == null )
+ {
+ throw new IllegalArgumentException( "project missing" );
+ }
+
+ Collection<String> projectIds = new HashSet<String>();
+
+ getUpstreamProjects( ProjectSorter.getId( project ), projectIds, transitive );
+
+ return getProjects( projectIds );
}
- private void getDownstreamProjects( String projectId, Collection<String> projectIds, boolean transitive )
+ private void getUpstreamProjects( String projectId, Collection<String> projectIds, boolean transitive )
{
- for ( String id : sorter.getDependents( projectId ) )
+ for ( String id : sorter.getDependencies( projectId ) )
{
projectIds.add( id );
if ( transitive )
{
- getDownstreamProjects( id, projectIds, transitive );
+ getUpstreamProjects( id, projectIds, transitive );
+ }
+ }
+ }
+
+ private List<MavenProject> getProjects( Collection<String> projectIds )
+ {
+ List<MavenProject> projects = new ArrayList<MavenProject>();
+
+ for ( MavenProject p : sorter.getSortedProjects() )
+ {
+ if ( projectIds.contains( ProjectSorter.getId( p ) ) )
+ {
+ projects.add( p );
}
}
+
+ return projects;
}
@Override
Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/FilteredProjectDependencyGraph.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/FilteredProjectDependencyGraph.java?rev=794043&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/FilteredProjectDependencyGraph.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/FilteredProjectDependencyGraph.java Tue Jul 14 20:03:15 2009
@@ -0,0 +1,111 @@
+package org.apache.maven;
+
+/*
+ * 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 java.util.ArrayList;
+import java.util.Collection;
+import java.util.IdentityHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.execution.ProjectDependencyGraph;
+import org.apache.maven.project.MavenProject;
+
+/**
+ * Provides a sub view of another dependency graph.
+ *
+ * @author Benjamin Bentmann
+ */
+class FilteredProjectDependencyGraph
+ implements ProjectDependencyGraph
+{
+
+ private ProjectDependencyGraph projectDependencyGraph;
+
+ private Map<MavenProject, ?> whiteList;
+
+ private List<MavenProject> sortedProjects;
+
+ /**
+ * Creates a new project dependency graph from the specified graph.
+ *
+ * @param projectDependencyGraph The project dependency graph to create a sub view from, must not be {@code null}.
+ * @param whiteList The projects on which the dependency view should focus, must not be {@code null}.
+ */
+ public FilteredProjectDependencyGraph( ProjectDependencyGraph projectDependencyGraph,
+ Collection<? extends MavenProject> whiteList )
+ {
+ if ( projectDependencyGraph == null )
+ {
+ throw new IllegalArgumentException( "project dependency graph missing" );
+ }
+
+ this.projectDependencyGraph = projectDependencyGraph;
+
+ this.whiteList = new IdentityHashMap<MavenProject, Object>();
+
+ for ( MavenProject project : whiteList )
+ {
+ this.whiteList.put( project, null );
+ }
+ }
+
+ public List<MavenProject> getSortedProjects()
+ {
+ if ( sortedProjects == null )
+ {
+ sortedProjects = applyFilter( projectDependencyGraph.getSortedProjects() );
+ }
+
+ return new ArrayList<MavenProject>( sortedProjects );
+ }
+
+ public List<MavenProject> getDownstreamProjects( MavenProject project, boolean transitive )
+ {
+ return applyFilter( projectDependencyGraph.getDownstreamProjects( project, transitive ) );
+ }
+
+ public List<MavenProject> getUpstreamProjects( MavenProject project, boolean transitive )
+ {
+ return applyFilter( projectDependencyGraph.getUpstreamProjects( project, transitive ) );
+ }
+
+ private List<MavenProject> applyFilter( Collection<? extends MavenProject> projects )
+ {
+ List<MavenProject> filtered = new ArrayList<MavenProject>( projects.size() );
+
+ for ( MavenProject project : projects )
+ {
+ if ( whiteList.containsKey( project ) )
+ {
+ filtered.add( project );
+ }
+ }
+
+ return filtered;
+ }
+
+ @Override
+ public String toString()
+ {
+ return getSortedProjects().toString();
+ }
+
+}
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/FilteredProjectDependencyGraph.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/FilteredProjectDependencyGraph.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java?rev=794043&r1=794042&r2=794043&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java Tue Jul 14 20:03:15 2009
@@ -85,6 +85,12 @@
private String reactorFailureBehavior = REACTOR_FAIL_FAST;
+ private List<String> selectedProjects;
+
+ private String resumeFrom;
+
+ private String makeBehavior;
+
private Properties properties;
private Date startTime;
@@ -200,6 +206,26 @@
return reactorFailureBehavior;
}
+ public List<String> getSelectedProjects()
+ {
+ if ( selectedProjects == null )
+ {
+ selectedProjects = new ArrayList<String>();
+ }
+
+ return selectedProjects;
+ }
+
+ public String getResumeFrom()
+ {
+ return resumeFrom;
+ }
+
+ public String getMakeBehavior()
+ {
+ return makeBehavior;
+ }
+
public Date getStartTime()
{
return startTime;
@@ -414,6 +440,34 @@
return this;
}
+ public MavenExecutionRequest setSelectedProjects( List<String> selectedProjects )
+ {
+ if ( selectedProjects != null )
+ {
+ this.selectedProjects = new ArrayList<String>( selectedProjects );
+ }
+ else
+ {
+ this.selectedProjects = null;
+ }
+
+ return this;
+ }
+
+ public MavenExecutionRequest setResumeFrom( String project )
+ {
+ this.resumeFrom = project;
+
+ return this;
+ }
+
+ public MavenExecutionRequest setMakeBehavior( String makeBehavior )
+ {
+ this.makeBehavior = makeBehavior;
+
+ return this;
+ }
+
public MavenExecutionRequest addActiveProfile( String profile )
{
if ( !getActiveProfiles().contains( profile ) )
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java?rev=794043&r1=794042&r2=794043&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java Tue Jul 14 20:03:15 2009
@@ -65,6 +65,16 @@
static final String REACTOR_FAIL_NEVER = "FAIL_NEVER";
// ----------------------------------------------------------------------
+ // Reactor Make Mode
+ // ----------------------------------------------------------------------
+
+ static final String REACTOR_MAKE_UPSTREAM = "make-upstream";
+
+ static final String REACTOR_MAKE_DOWNSTREAM = "make-downstream";
+
+ static final String REACTOR_MAKE_BOTH = "make-both";
+
+ // ----------------------------------------------------------------------
// Artifactr repository policies
// ----------------------------------------------------------------------
@@ -97,6 +107,15 @@
MavenExecutionRequest setReactorFailureBehavior( String failureBehavior );
String getReactorFailureBehavior();
+ MavenExecutionRequest setSelectedProjects( List<String> projects );
+ List<String> getSelectedProjects();
+
+ MavenExecutionRequest setResumeFrom( String project );
+ String getResumeFrom();
+
+ MavenExecutionRequest setMakeBehavior( String makeBehavior );
+ String getMakeBehavior();
+
// Recursive (really to just process the top-level POM)
MavenExecutionRequest setRecursive( boolean recursive );
boolean isRecursive();
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ProjectDependencyGraph.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ProjectDependencyGraph.java?rev=794043&r1=794042&r2=794043&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ProjectDependencyGraph.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ProjectDependencyGraph.java Tue Jul 14 20:03:15 2009
@@ -40,7 +40,7 @@
List<MavenProject> getSortedProjects();
/**
- * Gets the downstream projects of the specified projects. A downstream project is a project that directly or
+ * Gets the downstream projects of the specified project. A downstream project is a project that directly or
* indirectly depends on the given project.
*
* @param project The project whose downstream projects should be retrieved, must not be {@code null}.
@@ -50,4 +50,15 @@
*/
List<MavenProject> getDownstreamProjects( MavenProject project, boolean transitive );
+ /**
+ * Gets the upstream projects of the specified project. An upstream project is a project that directly or indirectly
+ * is a prerequisite of the given project.
+ *
+ * @param project The project whose upstream projects should be retrieved, must not be {@code null}.
+ * @param transitive A flag whether to retrieve all direct and indirect upstream projects or just the immediate
+ * upstream projects.
+ * @return The upstream projects in the build order, never {@code null}.
+ */
+ List<MavenProject> getUpstreamProjects( MavenProject project, boolean transitive );
+
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ProjectSorter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ProjectSorter.java?rev=794043&r1=794042&r2=794043&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ProjectSorter.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/ProjectSorter.java Tue Jul 14 20:03:15 2009
@@ -193,6 +193,11 @@
return dag.getParentLabels( id );
}
+ public List<String> getDependencies( String id )
+ {
+ return dag.getChildLabels( id );
+ }
+
public static String getId( MavenProject project )
{
return ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java?rev=794043&r1=794042&r2=794043&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java Tue Jul 14 20:03:15 2009
@@ -84,6 +84,14 @@
public static final String FAIL_NEVER = "fn";
+ public static final String RESUME_FROM = "rf";
+
+ public static final String PROJECT_LIST = "pl";
+
+ public static final String ALSO_MAKE = "am";
+
+ public static final String ALSO_MAKE_DEPENDENTS = "amd";
+
public static final String LOG_FILE = "l";
private Options options;
@@ -117,6 +125,10 @@
options.addOption( OptionBuilder.withLongOpt( "fail-fast" ).withDescription( "Stop at first failure in reactorized builds" ).create( FAIL_FAST ) );
options.addOption( OptionBuilder.withLongOpt( "fail-at-end" ).withDescription( "Only fail the build afterwards; allow all non-impacted builds to continue" ).create( FAIL_AT_END ) );
options.addOption( OptionBuilder.withLongOpt( "fail-never" ).withDescription( "NEVER fail the build, regardless of project result" ).create( FAIL_NEVER ) );
+ options.addOption( OptionBuilder.withLongOpt( "resume-from" ).hasArg().withDescription( "Resume reactor from specified project" ).create( RESUME_FROM ) );
+ options.addOption( OptionBuilder.withLongOpt( "projects" ).withDescription( "Build specified reactor projects instead of all projects" ).hasArg().create( PROJECT_LIST ) );
+ options.addOption( OptionBuilder.withLongOpt( "also-make" ).withDescription( "If project list is specified, also build projects required by the list" ).create( ALSO_MAKE ) );
+ options.addOption( OptionBuilder.withLongOpt( "also-make-dependents" ).withDescription( "If project list is specified, also build projects that depend on projects on the list" ).create( ALSO_MAKE_DEPENDENTS ) );
options.addOption( OptionBuilder.withLongOpt( "log-file" ).hasArg().withDescription( "Log file to where all build output will go." ).create( LOG_FILE ) );
options.addOption( OptionBuilder.withLongOpt( "show-version" ).withDescription( "Display version information WITHOUT stopping build" ).create( SHOW_VERSION ) );
@@ -138,7 +150,7 @@
private String[] cleanArgs( String[] args )
{
- List cleaned = new ArrayList();
+ List<String> cleaned = new ArrayList<String>();
StringBuffer currentArg = null;
@@ -226,7 +238,7 @@
}
else
{
- cleanArgs = (String[]) cleaned.toArray( new String[cleanedSz] );
+ cleanArgs = cleaned.toArray( new String[cleanedSz] );
}
return cleanArgs;
Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIRequestUtils.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIRequestUtils.java?rev=794043&r1=794042&r2=794043&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIRequestUtils.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIRequestUtils.java Tue Jul 14 20:03:15 2009
@@ -22,6 +22,7 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import java.util.StringTokenizer;
@@ -33,6 +34,7 @@
import org.apache.maven.embedder.MavenEmbedder;
import org.apache.maven.execution.DefaultMavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionRequest;
+import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.cli.CommandLineUtils;
public final class CLIRequestUtils
@@ -267,7 +269,34 @@
{
request.setPom( pom );
}
-
+
+ if ( commandLine.hasOption( CLIManager.RESUME_FROM ) )
+ {
+ request.setResumeFrom( commandLine.getOptionValue( CLIManager.RESUME_FROM ) );
+ }
+
+ if ( commandLine.hasOption( CLIManager.PROJECT_LIST ) )
+ {
+ String projectList = commandLine.getOptionValue( CLIManager.PROJECT_LIST );
+ String[] projects = StringUtils.split( projectList, "," );
+ request.setSelectedProjects( Arrays.asList( projects ) );
+ }
+
+ if ( commandLine.hasOption( CLIManager.ALSO_MAKE ) && !commandLine.hasOption( CLIManager.ALSO_MAKE_DEPENDENTS ) )
+ {
+ request.setMakeBehavior( MavenExecutionRequest.REACTOR_MAKE_UPSTREAM );
+ }
+ else if ( !commandLine.hasOption( CLIManager.ALSO_MAKE )
+ && commandLine.hasOption( CLIManager.ALSO_MAKE_DEPENDENTS ) )
+ {
+ request.setMakeBehavior( MavenExecutionRequest.REACTOR_MAKE_DOWNSTREAM );
+ }
+ else if ( commandLine.hasOption( CLIManager.ALSO_MAKE )
+ && commandLine.hasOption( CLIManager.ALSO_MAKE_DEPENDENTS ) )
+ {
+ request.setMakeBehavior( MavenExecutionRequest.REACTOR_MAKE_BOTH );
+ }
+
return request;
}