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 2012/10/01 20:21:54 UTC

svn commit: r1392495 - in /maven/shared/trunk/maven-invoker: ./ src/main/java/org/apache/maven/shared/invoker/ src/test/java/org/apache/maven/shared/invoker/

Author: rfscholte
Date: Mon Oct  1 18:21:53 2012
New Revision: 1392495

URL: http://svn.apache.org/viewvc?rev=1392495&view=rev
Log:
[MSHARED-187] Add option to execute a Maven build with alsoMake and alsoMakeDependents 
Contributed by Lucien Weller
Reviewed, adjusted + tests by Robert Scholte

Modified:
    maven/shared/trunk/maven-invoker/pom.xml
    maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/DefaultInvocationRequest.java
    maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/InvocationRequest.java
    maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/MavenCommandLineBuilder.java
    maven/shared/trunk/maven-invoker/src/test/java/org/apache/maven/shared/invoker/MavenCommandLineBuilderTest.java

Modified: maven/shared/trunk/maven-invoker/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-invoker/pom.xml?rev=1392495&r1=1392494&r2=1392495&view=diff
==============================================================================
--- maven/shared/trunk/maven-invoker/pom.xml (original)
+++ maven/shared/trunk/maven-invoker/pom.xml Mon Oct  1 18:21:53 2012
@@ -44,6 +44,12 @@ under the License.
     <system>jira</system>
     <url>http://jira.codehaus.org/browse/MSHARED/component/13271</url>
   </issueManagement>
+  
+  <contributors>
+    <contributor>
+      <name>Lucien Weller</name>
+    </contributor>
+  </contributors>
 
   <dependencies>
     <dependency>

Modified: maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/DefaultInvocationRequest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/DefaultInvocationRequest.java?rev=1392495&r1=1392494&r2=1392495&view=diff
==============================================================================
--- maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/DefaultInvocationRequest.java (original)
+++ maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/DefaultInvocationRequest.java Mon Oct  1 18:21:53 2012
@@ -88,6 +88,12 @@ public class DefaultInvocationRequest
 
     private String[] activatedReactorIncludes, activatedReactorExcludes;
     
+    private List<String> projects;
+
+    private boolean alsoMake;
+
+    private boolean alsoMakeDependents;
+
     private boolean showVersion;
 
     private String threads;
@@ -422,4 +428,55 @@ public class DefaultInvocationRequest
         return this;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    public List<String> getProjects()
+    {
+        return projects;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public InvocationRequest setProjects( List<String> projects )
+    {
+        this.projects = projects;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isAlsoMake()
+    {
+        return alsoMake;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public InvocationRequest setAlsoMake( boolean alsoMake )
+    {
+        this.alsoMake = alsoMake;
+        return this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isAlsoMakeDependents()
+    {
+        return alsoMakeDependents;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public InvocationRequest setAlsoMakeDependents( boolean alsoMakeDependents )
+    {
+        this.alsoMakeDependents = alsoMakeDependents;
+        return this;
+    }
+
 }

Modified: maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/InvocationRequest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/InvocationRequest.java?rev=1392495&r1=1392494&r2=1392495&view=diff
==============================================================================
--- maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/InvocationRequest.java (original)
+++ maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/InvocationRequest.java Mon Oct  1 18:21:53 2012
@@ -84,6 +84,30 @@ public interface InvocationRequest
      */
     public String[] getActivatedReactorExcludes();
 
+    /**
+     * A list of specified reactor projects to build instead of all projects. 
+     * A project can be specified by [groupId]:artifactId or by its relative path.
+     * 
+     * @return the list of projects to add to reactor build, otherwise {@code null}
+     * @since 2.0.12
+     */
+    public List<String> getProjects();
+
+    /**
+     * Get the value of the {@code also-make} argument.
+     * 
+     * @return {@code true} if the argument {@code also-make} was specified, otherwise {@code false}
+     * @since 2.0.12
+     */
+    boolean isAlsoMake();
+
+    /**
+     * Get the value of the {@code also-make-dependents}
+     * 
+     * @return {@code true} if the argument {@code also-make-dependents} was specified, otherwise {@code false}
+     * @since 2.0.12
+     */
+    boolean isAlsoMakeDependents();
 
     /**
      * Gets the debug mode of the Maven invocation. By default, Maven is executed in normal mode.
@@ -537,4 +561,34 @@ public interface InvocationRequest
      * @since 2.0.12
      */
     InvocationRequest setThreads( String threads );
+
+    /**
+     * Sets the reactor project list.
+     * Equivalent of {@code -P} or {@code --projects}
+     * 
+     * @param projects the reactor project list 
+     * @return This invocation request.
+     * @since 2.0.12
+     */
+    InvocationRequest setProjects( List<String> projects );
+
+    /**
+     * Enable the 'also make' mode.
+     * Equivalent of {@code -am} or {@code --also-make}
+     * 
+     * @param alsoMake enable 'also make' mode 
+     * @return This invocation request.
+     * @since 2.0.12
+     */
+    InvocationRequest setAlsoMake( boolean alsoMake );
+
+	/**
+     * Enable the 'also make dependents' mode.
+     * Equivalent of {@code -amd} or {@code --also-make-dependents}
+     * 
+     * @param alsoMake enable 'also make' mode 
+     * @return This invocation request.
+     * @since 2.0.12
+     */
+    InvocationRequest setAlsoMakeDependents( boolean alsoMakeDependents );
 }

Modified: maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/MavenCommandLineBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/MavenCommandLineBuilder.java?rev=1392495&r1=1392494&r2=1392495&view=diff
==============================================================================
--- maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/MavenCommandLineBuilder.java (original)
+++ maven/shared/trunk/maven-invoker/src/main/java/org/apache/maven/shared/invoker/MavenCommandLineBuilder.java Mon Oct  1 18:21:53 2012
@@ -398,6 +398,23 @@ public class MavenCommandLineBuilder
                 cli.createArg().setValue( "maven.reactor.excludes=" + StringUtils.join( excludes, "," ) );
             }
         }
+
+        List<String> projectList = request.getProjects();
+        if ( projectList != null )
+        {
+            cli.createArg().setValue( "-pl" );
+            cli.createArg().setValue( StringUtils.join( projectList.iterator(), "," ) );
+
+            if ( request.isAlsoMake() )
+            {
+                cli.createArg().setValue( "-am" );
+            }
+
+            if ( request.isAlsoMakeDependents() )
+            {
+                cli.createArg().setValue( "-amd" );
+            }
+        }
     }
 
     protected void setFlags( InvocationRequest request, Commandline cli )
@@ -450,7 +467,7 @@ public class MavenCommandLineBuilder
         {
             cli.createArg().setValue( "-V" );
         }
-    }
+	}
 
     protected void setThreads( InvocationRequest request, Commandline cli )
     {

Modified: maven/shared/trunk/maven-invoker/src/test/java/org/apache/maven/shared/invoker/MavenCommandLineBuilderTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-invoker/src/test/java/org/apache/maven/shared/invoker/MavenCommandLineBuilderTest.java?rev=1392495&r1=1392494&r2=1392495&view=diff
==============================================================================
--- maven/shared/trunk/maven-invoker/src/test/java/org/apache/maven/shared/invoker/MavenCommandLineBuilderTest.java (original)
+++ maven/shared/trunk/maven-invoker/src/test/java/org/apache/maven/shared/invoker/MavenCommandLineBuilderTest.java Mon Oct  1 18:21:53 2012
@@ -440,8 +440,6 @@ public class MavenCommandLineBuilderTest
         tcb.setReactorBehavior( newRequest().activateReactor( null, null ), cli );
 
         assertArgumentsPresent( cli, Collections.singleton( "-r" ) );
-
-        
     }
     
     public void testActivateReactorIncludesExcludes()
@@ -464,6 +462,68 @@ public class MavenCommandLineBuilderTest
 
         assertArgumentsPresent( cli, args );
     }
+    
+    public void testAlsoMake()
+    {
+        logTestStart();
+        
+        TestCommandLineBuilder tcb = new TestCommandLineBuilder();
+        Commandline cli = new Commandline();
+
+        tcb.setReactorBehavior( newRequest().setAlsoMake( true ), cli );
+
+        //-am is only useful with -pl
+        assertArgumentsNotPresent( cli, Collections.singleton( "-am" ) );
+    }
+
+    public void testProjectsAndAlsoMake()
+    {
+        logTestStart();
+        
+        TestCommandLineBuilder tcb = new TestCommandLineBuilder();
+        Commandline cli = new Commandline();
+
+        tcb.setReactorBehavior( newRequest().setProjects( Collections.singletonList( "proj1" ) ).setAlsoMake( true ), cli );
+
+        assertArgumentsPresentInOrder( cli, "-pl", "proj1", "-am" );
+    }
+
+    public void testAlsoMakeDependents()
+    {
+        logTestStart();
+        
+        TestCommandLineBuilder tcb = new TestCommandLineBuilder();
+        Commandline cli = new Commandline();
+
+        tcb.setReactorBehavior( newRequest().setAlsoMakeDependents( true ), cli );
+
+        //-amd is only useful with -pl
+        assertArgumentsNotPresent( cli, Collections.singleton( "-amd" ) );
+    }
+
+    public void testProjectsAndAlsoMakeDependents()
+    {
+        logTestStart();
+        
+        TestCommandLineBuilder tcb = new TestCommandLineBuilder();
+        Commandline cli = new Commandline();
+
+        tcb.setReactorBehavior( newRequest().setProjects( Collections.singletonList( "proj1" ) ).setAlsoMakeDependents( true ), cli );
+
+        assertArgumentsPresentInOrder( cli, "-pl", "proj1", "-amd" );
+    }
+
+    public void testProjectsAndAlsoMakeAndAlsoMakeDependents()
+    {
+        logTestStart();
+        
+        TestCommandLineBuilder tcb = new TestCommandLineBuilder();
+        Commandline cli = new Commandline();
+
+        tcb.setReactorBehavior( newRequest().setProjects( Collections.singletonList( "proj1" ) ).setAlsoMake( true ).setAlsoMakeDependents( true ), cli );
+
+        assertArgumentsPresentInOrder( cli, "-pl", "proj1", "-am", "-amd" );
+    }
 
     public void testShouldSetStrictChecksumPolityFlagFromRequest()
     {