Author: dfabulich Date: Thu Aug 14 13:13:32 2008 New Revision: 686017 URL: http://svn.apache.org/viewvc?rev=686017&view=rev Log: [MINVOKER-54] Invoker should provide support for activateReactor
Modified: 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/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=686017&r1=686016&r2=686017&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 Thu Aug 14 13:13:32 2008 @@ -83,10 +83,17 @@ private Map shellEnvironments; private String mavenOpts; + + private boolean activatedReactor; + + private String[] activatedReactorIncludes, activatedReactorExcludes; public InvocationRequest activateReactor( String[] includes, String[] excludes ) { - throw new UnsupportedOperationException( "Not implemented yet." ); + activatedReactor = true; + activatedReactorIncludes = includes; + activatedReactorExcludes = excludes; + return this; } public File getBaseDirectory() @@ -361,5 +368,20 @@ this.mavenOpts = mavenOpts; return this; } + + public boolean isActivatedReactor() + { + return activatedReactor; + } + + public String[] getActivatedReactorIncludes() + { + return activatedReactorIncludes; + } + + public String[] getActivatedReactorExcludes() + { + return activatedReactorExcludes; + } } 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=686017&r1=686016&r2=686017&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 Thu Aug 14 13:13:32 2008 @@ -67,6 +67,25 @@ boolean isRecursive(); /** + * Gets whether Maven should search subdirectories to build a dynamic reactor + * @return <code>true</code> if we should search subdirectories, <code>false</code> otherwise + */ + public boolean isActivatedReactor(); + + /** + * Gets the list of subdirectory patterns to search + * @return list of subdirectory patterns to search, or <code>null</code> in which case defaults should be used + */ + public String[] getActivatedReactorIncludes(); + + /** + * Gets the list of subdirectory patterns to exclude from search + * @return list of subdirectory patterns to exclude search, or <code>null</code> in which case nothing should be excluded + */ + public String[] getActivatedReactorExcludes(); + + + /** * Gets the debug mode of the Maven invocation. By default, Maven is executed in normal mode. * * @return <code>true</code> if Maven should be executed in debug mode, <code>false</code> if the normal mode @@ -320,6 +339,12 @@ */ InvocationRequest setFailureBehavior( String failureBehavior ); + /** + * Dynamically constructs a reactor using the subdirectories of the current directory + * @param includes a list of filename patterns to include, or null, in which case the default is */pom.xml + * @param excludes a list of filename patterns to exclude, or null, in which case nothing is excluded + * @return This invocation request + */ InvocationRequest activateReactor( String[] includes, String[] excludes ); /** 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=686017&r1=686016&r2=686017&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 Thu Aug 14 13:13:32 2008 @@ -382,7 +382,22 @@ } } - // TODO: Setup forced-reactor args, if supplied. + if ( request.isActivatedReactor() ) + { + cli.createArgument().setValue( "-r" ); + String[] includes = request.getActivatedReactorIncludes(); + String[] excludes = request.getActivatedReactorExcludes(); + if ( includes != null ) + { + cli.createArgument().setValue( "-D" ); + cli.createArgument().setValue( "maven.reactor.includes=" + StringUtils.join( includes, "," ) ); + } + if ( excludes != null ) + { + cli.createArgument().setValue( "-D" ); + cli.createArgument().setValue( "maven.reactor.excludes=" + StringUtils.join( excludes, "," ) ); + } + } } protected void setFlags( 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=686017&r1=686016&r2=686017&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 Thu Aug 14 13:13:32 2008 @@ -429,6 +429,44 @@ assertArgumentsPresent( Collections.singleton( "-X" ), cli ); assertArgumentsNotPresent( Collections.singleton( "-e" ), cli ); } + + public void testActivateReactor() + { + logTestStart(); + + TestCommandLineBuilder tcb = new TestCommandLineBuilder(); + Commandline cli = new Commandline(); + + tcb.setReactorBehavior( newRequest().activateReactor( null, null ), cli ); + + assertArgumentsPresent( Collections.singleton( "-r" ), cli ); + + + } + + public void testActivateReactorIncludesExcludes() + { + logTestStart(); + + TestCommandLineBuilder tcb = new TestCommandLineBuilder(); + Commandline cli = new Commandline(); + + String[] includes = new String[] {"foo", "bar"}; + String[] excludes = new String[] {"baz", "quz"}; + + tcb.setReactorBehavior( newRequest().activateReactor( includes, excludes ), cli ); + + Set args = new HashSet(); + args.add( "-r" ); + args.add( "-D" ); + args.add( "maven.reactor.includes=foo,bar" ); + args.add( "maven.reactor.excludes=baz,quz" ); + + assertArgumentsPresent( args, cli ); + + + + } public void testShouldSetStrictChecksumPolityFlagFromRequest() {