You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by st...@apache.org on 2009/10/20 21:18:03 UTC
svn commit: r827765 - in /maven/plugins/trunk/maven-invoker-plugin/src:
it/selector-scripts/ it/selector-scripts/src/it/jre-version-match/
it/selector-scripts/src/it/jre-version-mismatch/
it/selector-scripts/src/it/os-family-match/ it/selector-scripts/...
Author: stephenc
Date: Tue Oct 20 19:18:02 2009
New Revision: 827765
URL: http://svn.apache.org/viewvc?rev=827765&view=rev
Log:
Implements MINVOKER-95
Added:
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/ (props changed)
- copied from r826599, maven/plugins/trunk/maven-invoker-plugin/src/it/selector-conditions/
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-false/ (props changed)
- copied from r826599, maven/plugins/trunk/maven-invoker-plugin/src/it/selector-conditions/src/it/jre-version-match/
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-false/selector.bsh
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-other/ (props changed)
- copied from r826599, maven/plugins/trunk/maven-invoker-plugin/src/it/selector-conditions/src/it/jre-version-match/
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-other/selector.bsh
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-quiet/ (props changed)
- copied from r826599, maven/plugins/trunk/maven-invoker-plugin/src/it/selector-conditions/src/it/jre-version-match/
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-quiet/selector.bsh
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/ (props changed)
- copied from r826599, maven/plugins/trunk/maven-invoker-plugin/src/it/selector-conditions/src/it/jre-version-match/
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/selector.bsh
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/ (props changed)
- copied from r826599, maven/plugins/trunk/maven-invoker-plugin/src/it/selector-conditions/src/it/jre-version-match/
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/selector.bsh
maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/BuildErrorException.java
- copied, changed from r826599, maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/BuildFailureException.java
maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/selector-scripts.apt.vm
- copied, changed from r826599, maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/selector-conditions.apt.vm
Removed:
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/jre-version-match/
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/jre-version-mismatch/
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/os-family-match/
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/os-family-mismatch/
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-false/invoker.properties
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-other/invoker.properties
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-quiet/invoker.properties
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/invoker.properties
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/invoker.properties
Modified:
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/pom.xml
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/postbuild.bsh
maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/verify.bsh
maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java
maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerSession.java
maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/ScriptRunner.java
maven/plugins/trunk/maven-invoker-plugin/src/site/site.xml
Propchange: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Oct 20 19:18:02 2009
@@ -0,0 +1,9 @@
+build.log
+interpolated-pom.xml
+target
+*.iml
+*.ipr
+*.iws
+.classpath
+.project
+.settings
Modified: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/pom.xml?rev=827765&r1=826599&r2=827765&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/pom.xml (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/pom.xml Tue Oct 20 19:18:02 2009
@@ -23,11 +23,11 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.plugins.invoker</groupId>
- <artifactId>selector-conditions</artifactId>
+ <artifactId>selector-scripts</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
- <description>Test to check for selection of builds based on OS and/or JRE.</description>
+ <description>Test to check for selection of builds based on scripted conditions.</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -44,7 +44,8 @@
<pomIncludes>
<pomInclude>*/pom.xml</pomInclude>
</pomIncludes>
- <preBuildHookScript>prebuild</preBuildHookScript>
+ <selectorScript>selector</selectorScript>
+ <ignoreFailures>true</ignoreFailures>
<postBuildHookScript>postbuild</postBuildHookScript>
<goals>
<goal>validate</goal>
Propchange: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-false/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Oct 20 19:18:02 2009
@@ -0,0 +1,8 @@
+build.log
+target
+*.iml
+*.ipr
+*.iws
+.classpath
+.project
+.settings
Added: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-false/selector.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-false/selector.bsh?rev=827765&view=auto
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-false/selector.bsh (added)
+++ maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-false/selector.bsh Tue Oct 20 19:18:02 2009
@@ -0,0 +1,3 @@
+import java.io.*;
+
+return false;
Propchange: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-other/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Oct 20 19:18:02 2009
@@ -0,0 +1,9 @@
+build.log
+target
+*.iml
+*.ipr
+*.iws
+.classpath
+.project
+.settings
+
Added: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-other/selector.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-other/selector.bsh?rev=827765&view=auto
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-other/selector.bsh (added)
+++ maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-other/selector.bsh Tue Oct 20 19:18:02 2009
@@ -0,0 +1,3 @@
+import java.io.*;
+
+return "Some thing";
Propchange: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-quiet/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Oct 20 19:18:02 2009
@@ -0,0 +1,9 @@
+build.log
+target
+*.iml
+*.ipr
+*.iws
+.classpath
+.project
+.settings
+
Added: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-quiet/selector.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-quiet/selector.bsh?rev=827765&view=auto
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-quiet/selector.bsh (added)
+++ maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-quiet/selector.bsh Tue Oct 20 19:18:02 2009
@@ -0,0 +1,2 @@
+import java.io.*;
+
Propchange: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Oct 20 19:18:02 2009
@@ -0,0 +1,9 @@
+build.log
+target
+*.iml
+*.ipr
+*.iws
+.classpath
+.project
+.settings
+
Modified: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/postbuild.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/postbuild.bsh?rev=827765&r1=826599&r2=827765&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/postbuild.bsh (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/postbuild.bsh Tue Oct 20 19:18:02 2009
@@ -5,3 +5,4 @@
System.out.println( "Creating touch file: " + touchFile );
touchFile.getParentFile().mkdirs();
touchFile.createNewFile();
+return true;
Added: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/selector.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/selector.bsh?rev=827765&view=auto
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/selector.bsh (added)
+++ maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-ret-true/selector.bsh Tue Oct 20 19:18:02 2009
@@ -0,0 +1,3 @@
+import java.io.*;
+
+return true;
Propchange: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Oct 20 19:18:02 2009
@@ -0,0 +1,9 @@
+build.log
+target
+*.iml
+*.ipr
+*.iws
+.classpath
+.project
+.settings
+
Added: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/selector.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/selector.bsh?rev=827765&view=auto
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/selector.bsh (added)
+++ maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/selector.bsh Tue Oct 20 19:18:02 2009
@@ -0,0 +1,3 @@
+import java.io.*;
+
+throw new NullPointerException( "Bite me" );
Modified: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/verify.bsh?rev=827765&r1=826599&r2=827765&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/verify.bsh (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/verify.bsh Tue Oct 20 19:18:02 2009
@@ -2,11 +2,13 @@
import java.util.*;
import java.util.regex.*;
+import org.codehaus.plexus.util.*;
+
try
{
String[] expected = {
- "src/it/jre-version-match/target/touch.txt",
- "src/it/os-family-match/target/touch.txt",
+ "src/it/script-ret-true/target/touch.txt",
+ "src/it/script-ret-quiet/target/touch.txt",
};
for ( String file : expected )
{
@@ -20,8 +22,9 @@
}
String[] unexpected = {
- "src/it/jre-version-mismatch/target/touch.txt",
- "src/it/os-family-mismatch/target/touch.txt",
+ "src/it/script-ret-false/target/touch.txt",
+ "src/it/script-ret-other/target/touch.txt",
+ "src/it/script-throws/target/touch.txt",
};
for ( String file : unexpected )
{
@@ -33,6 +36,56 @@
return false;
}
}
+
+ String[] success = {
+ "target/invoker-reports/BUILD-script-ret-true.xml",
+ "target/invoker-reports/BUILD-script-ret-quiet.xml",
+ };
+ for ( String file : success )
+ {
+ File resultFile = new File( basedir, file );
+ System.out.println( "Checking build result: " + resultFile );
+ String xml = FileUtils.fileRead( resultFile, "UTF-8" );
+ if ( !xml.contains("result=\"success\"") && !xml.contains("result='success'") )
+ {
+ System.out.println( "FAILED!" );
+ return false;
+ }
+ }
+
+ String[] skipped = {
+ "target/invoker-reports/BUILD-script-ret-false.xml",
+ "target/invoker-reports/BUILD-script-ret-other.xml",
+ };
+ for ( String file : skipped )
+ {
+ File resultFile = new File( basedir, file );
+ System.out.println( "Checking build result: " + resultFile );
+ String xml = FileUtils.fileRead( resultFile, "UTF-8" );
+ if ( !xml.contains("result=\"skipped\"") && !xml.contains("result='skipped'") )
+ {
+ System.out.println( "FAILED!" );
+ return false;
+ }
+ }
+
+
+ String[] inerror = {
+ "target/invoker-reports/BUILD-script-throw.xml",
+ };
+ for ( String file : inerror )
+ {
+ File resultFile = new File( basedir, file );
+ System.out.println( "Checking build result: " + resultFile );
+ String xml = FileUtils.fileRead( resultFile, "UTF-8" );
+ if ( !xml.contains("result=\"error\"") && !xml.contains("result='error'") )
+ {
+ System.out.println( "FAILED!" );
+ return false;
+ }
+ }
+
+
}
catch( Throwable t )
{
Modified: maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java?rev=827765&r1=827764&r2=827765&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java Tue Oct 20 19:18:02 2009
@@ -225,6 +225,18 @@
private Invoker invoker;
/**
+ * Relative path of a selector script to run prior to executing the build. This script may be written with
+ * either BeanShell or Groovy (since 1.3). If the file extension is omitted (e.g. <code>prebuild</code>), the plugin
+ * searches for the file by trying out the well-known extensions <code>.bsh</code> and <code>.groovy</code>. If this
+ * script exists for a particular project but returns any non-null value different from <code>true</code> or throws
+ * an exception, the corresponding build is flagged as skipped. In this case, none of the pre-build hook script,
+ * Maven nor the post-build hook script will be invoked.
+ *
+ * @parameter expression="${invoker.selectorScript}" default-value="selector"
+ */
+ private String selectorScript;
+
+ /**
* Relative path of a pre-build hook script to run prior to executing the build. This script may be written with
* either BeanShell or Groovy (since 1.3). If the file extension is omitted (e.g. <code>prebuild</code>), the plugin
* searches for the file by trying out the well-known extensions <code>.bsh</code> and <code>.groovy</code>. If this
@@ -1004,9 +1016,10 @@
if ( isSelected( invokerProperties ) )
{
long milliseconds = System.currentTimeMillis();
+ boolean executed;
try
{
- runBuild( basedir, interpolatedPomFile, settingsFile, invokerProperties );
+ executed = runBuild( basedir, interpolatedPomFile, settingsFile, invokerProperties );
}
finally
{
@@ -1014,11 +1027,24 @@
buildJob.setTime( milliseconds / 1000.0 );
}
- buildJob.setResult( BuildJob.Result.SUCCESS );
+ if ( executed )
+ {
- if ( !suppressSummaries )
+ buildJob.setResult( BuildJob.Result.SUCCESS );
+
+ if ( !suppressSummaries )
+ {
+ getLog().info( "..SUCCESS " + formatTime( buildJob.getTime() ) );
+ }
+ }
+ else
{
- getLog().info( "..SUCCESS " + formatTime( buildJob.getTime() ) );
+ buildJob.setResult( BuildJob.Result.SKIPPED );
+
+ if ( !suppressSummaries )
+ {
+ getLog().info( "..SKIPPED " + formatTime( buildJob.getTime() ) );
+ }
}
}
else
@@ -1031,6 +1057,17 @@
}
}
}
+ catch ( BuildErrorException e )
+ {
+ buildJob.setResult( BuildJob.Result.ERROR );
+ buildJob.setFailureMessage( e.getMessage() );
+
+ if ( !suppressSummaries )
+ {
+ getLog().info( "..ERROR " + formatTime( buildJob.getTime() ) );
+ getLog().info( " " + e.getMessage() );
+ }
+ }
catch ( BuildFailureException e )
{
buildJob.setResult( e.getType() );
@@ -1139,10 +1176,12 @@
* @param settingsFile The (already interpolated) user settings file for the build, may be <code>null</code> to use
* the current user settings.
* @param invokerProperties The properties to use.
+ * @return <code>true</code> if the project was launched or <code>false</code> if the selector script indicated that
+ * the project should be skipped.
* @throws org.apache.maven.plugin.MojoExecutionException If the project could not be launched.
* @throws org.apache.maven.plugin.invoker.BuildFailureException If either a hook script or the build itself failed.
*/
- private void runBuild( File basedir, File pomFile, File settingsFile, InvokerProperties invokerProperties )
+ private boolean runBuild( File basedir, File pomFile, File settingsFile, InvokerProperties invokerProperties )
throws MojoExecutionException, BuildFailureException
{
if ( getLog().isDebugEnabled() && !invokerProperties.getProperties().isEmpty() )
@@ -1166,6 +1205,20 @@
FileLogger logger = setupLogger( basedir );
try
{
+ try
+ {
+ scriptRunner.run( "selector script", basedir, selectorScript, context, logger,
+ BuildJob.Result.SKIPPED );
+ }
+ catch ( BuildErrorException e )
+ {
+ throw e;
+ }
+ catch ( BuildFailureException e )
+ {
+ return false;
+ }
+
scriptRunner.run( "pre-build script", basedir, preBuildHookScript, context, logger,
BuildJob.Result.FAILURE_PRE_HOOK );
@@ -1265,6 +1318,7 @@
logger.close();
}
}
+ return true;
}
/**
Copied: maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/BuildErrorException.java (from r826599, maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/BuildFailureException.java)
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/BuildErrorException.java?p2=maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/BuildErrorException.java&p1=maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/BuildFailureException.java&r1=826599&r2=827765&rev=827765&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/BuildFailureException.java (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/BuildErrorException.java Tue Oct 20 19:18:02 2009
@@ -20,14 +20,14 @@
*/
/**
- * Signals a failure of a sub build run by the Invoker Plugin. This can be caused by an unsuccessful pre-/post-build
- * script or a failure of the forked Maven build itself.
+ * Signals an error in a sub build run by the Invoker Plugin. This can be caused by a selector/pre-build
+ * script throwing an exception or an error in forking the Maven build itself.
*
- * @author Benjamin Bentmann
+ * @author Stephen Connolly
* @version $Id$
*/
-class BuildFailureException
- extends Exception
+class BuildErrorException
+ extends BuildFailureException
{
/**
@@ -36,34 +36,16 @@
private static final long serialVersionUID = 236131530635863815L;
/**
- * The type of the build failure.
- */
- private final String type;
-
- /**
* Creates a new exception with the specified detail message.
*
* @param message The detail message, may be <code>null</code>.
* @param type The type of build failure, may not be <code>null</code>.
+ * @param cause The cause of the build error.
*/
- public BuildFailureException( String message, String type )
- {
- super( message );
- if ( type == null )
- {
- throw new IllegalArgumentException( "missing failure type" );
- }
- this.type = type;
- }
-
- /**
- * Returns the type of build failure.
- *
- * @return The type of build failure, never <code>null</code>.
- */
- public String getType()
+ public BuildErrorException( String message, String type, Throwable cause )
{
- return type;
+ super( message, type );
+ initCause( cause );
}
}
Modified: maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerSession.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerSession.java?rev=827765&r1=827764&r2=827765&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerSession.java (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/InvokerSession.java Tue Oct 20 19:18:02 2009
@@ -40,6 +40,8 @@
private List failedJobs;
+ private List errorJobs;
+
private List successfulJobs;
private List skippedJobs;
@@ -121,6 +123,18 @@
}
/**
+ * Gets the build jobs which had errors for this session.
+ *
+ * @return The build jobs in error for this session, can be empty but never <code>null</code>.
+ */
+ public List getErrorJobs()
+ {
+ updateStats();
+
+ return errorJobs;
+ }
+
+ /**
* Gets the skipped build jobs in this session.
*
* @return The skipped build jobs in this session, can be empty but never <code>null</code>.
@@ -137,11 +151,12 @@
successfulJobs = null;
failedJobs = null;
skippedJobs = null;
+ errorJobs = null;
}
private void updateStats()
{
- if ( successfulJobs != null && skippedJobs != null && failedJobs != null )
+ if ( successfulJobs != null && skippedJobs != null && failedJobs != null && errorJobs != null )
{
return;
}
@@ -149,6 +164,7 @@
successfulJobs = new ArrayList();
failedJobs = new ArrayList();
skippedJobs = new ArrayList();
+ errorJobs = new ArrayList();
for ( Iterator iterator = buildJobs.iterator(); iterator.hasNext(); )
{
@@ -162,6 +178,10 @@
{
skippedJobs.add( buildJob );
}
+ else if ( BuildJob.Result.ERROR.equals( buildJob.getResult() ) )
+ {
+ errorJobs.add( buildJob );
+ }
else if ( buildJob.getResult() != null )
{
failedJobs.add( buildJob );
@@ -183,9 +203,10 @@
logger.info( separator );
logger.info( "Execution Summary:" );
- logger.info( " Builds Passing: " + successfulJobs.size() );
- logger.info( " Builds Failing: " + failedJobs.size() );
- logger.info( " Builds Skipped: " + skippedJobs.size() );
+ logger.info( " Builds Passing: " + successfulJobs.size() );
+ logger.info( " Builds Failing: " + failedJobs.size() );
+ logger.info( " Builds in Error: " + errorJobs.size() );
+ logger.info( " Builds Skipped: " + skippedJobs.size() );
logger.info( separator );
if ( !failedJobs.isEmpty() )
@@ -244,6 +265,19 @@
throw new MojoFailureException( this, message, message );
}
}
+ if ( !errorJobs.isEmpty() )
+ {
+ String message = errorJobs.size() + " build" + ( errorJobs.size() == 1 ? "" : "s" ) + " in error.";
+
+ if ( ignoreFailures )
+ {
+ logger.warn( "Ignoring that " + message );
+ }
+ else
+ {
+ throw new MojoFailureException( this, message, message );
+ }
+ }
}
}
Modified: maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/ScriptRunner.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/ScriptRunner.java?rev=827765&r1=827764&r2=827765&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/ScriptRunner.java (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/ScriptRunner.java Tue Oct 20 19:18:02 2009
@@ -215,7 +215,7 @@
{
t.printStackTrace( logger.getPrintStream() );
}
- throw new BuildFailureException( "The " + scriptDescription + " did not succeed. " + msg, stage );
+ throw new BuildErrorException( "The " + scriptDescription + " did not succeed. " + msg, stage, t );
}
if ( !( result == null || Boolean.TRUE.equals( result ) || "true".equals( result ) ) )
Copied: maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/selector-scripts.apt.vm (from r826599, maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/selector-conditions.apt.vm)
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/selector-scripts.apt.vm?p2=maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/selector-scripts.apt.vm&p1=maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/selector-conditions.apt.vm&r1=826599&r2=827765&rev=827765&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/selector-conditions.apt.vm (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/site/apt/examples/selector-scripts.apt.vm Tue Oct 20 19:18:02 2009
@@ -1,9 +1,9 @@
------
- Selector Conditions
+ Selector Scripts
------
- Benjamin Bentmann
+ Stephen Connolly
------
- 2009-09-19
+ 2009-10-20
------
~~ Licensed to the Apache Software Foundation (ASF) under one
@@ -26,34 +26,63 @@
~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/doxia/references/apt-format.html
-Selector Conditions
+Selector Scripts
- Starting with plugin version 1.4, some keys of the {{{./invoker-properties.html}Invoker Properties}} can be used to
- skip individual projects based on the current JRE version or OS family as illustrated in the example below:
+ Starting with plugin version 1.5, a custom script can be used to skip individual projects based on
+ whatever critria are expressed in the script as illustrated in the following example. Assume the
+ following directory structure:
-------------------
-# build project if JRE version is 1.4 or higher, but exclude version 1.4.1
-invoker.java.version = 1.4+, !1.4.1
+./
++- pom.xml
++- src/
+ +- it/
+ +- settings.xml
+ +- conditional-it/
+ +- pom.xml
+ +- check-assumptions.bsh
+ +- src/
+-------------------
+
+ The plugin configuration for this example would look like this:
-# build project if OS family is not Windows
-invoker.os.family = !windows
+-------------------
+<project>
+ ...
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-invoker-plugin</artifactId>
+ <version>${project.version}</version>
+ <configuration>
+ <projectsDirectory>src/it</projectsDirectory>
+ <cloneProjectsTo>\${project.build.directory}/it</cloneProjectsTo>
+ <pomIncludes>
+ <pomInclude>*/pom.xml</pomInclude>
+ </pomIncludes>
+ <settingsFile>src/it/settings.xml</settingsFile>
+ <localRepositoryPath>\${project.build.directory}/local-repo</localRepositoryPath>
+ <selectorScript>check-assumptions.bsh</selectorScript>
+ </configuration>
+ <executions>
+ <execution>
+ <id>integration-test</id>
+ <goals>
+ <goal>install</goal>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ ...
+</project>
-------------------
- The values of these keys are comma separated tokens. A token prefixed with "!" denotes an exclusion, otherwise it
- denotes an inclusion. A project is build if no exclusion matches and if no inclusions are given or at least one of
- them matches the current environment.
-
- The tokens to describe JRE versions can be suffixed with "+" or "-". The table below shows how the different styles
- of version tokens translate to a version range:
-
-*----------------+----------------------------+
-|| Version Token || Equivalent Version Range |
-*----------------+----------------------------+
-| 1.5 | [1.5,1.6) |
-*----------------+----------------------------+
-| 1.5+ | [1.5,) |
-*----------------+----------------------------+
-| 1.5- | (,1.5) |
-*----------------+----------------------------+
+ If the check-assumptions.bsh script returns <<<true>>> or does not return a value, then the project will be executed.
- For the OS family, the tokens "windows", "unix" and "mac" are supported.
+ If the script returns any value other than <<<true>>>, then the project will be executed.
+
+ If the script throws an exception, then the project will be marked as being in ERROR.
+
Modified: maven/plugins/trunk/maven-invoker-plugin/src/site/site.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/site/site.xml?rev=827765&r1=827764&r2=827765&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/site/site.xml (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/site/site.xml Tue Oct 20 19:18:02 2009
@@ -39,6 +39,7 @@
<item name="Installing Artifacts" href="examples/install-artifacts.html"/>
<item name="Invoker Properties" href="examples/invoker-properties.html"/>
<item name="Selector Conditions" href="examples/selector-conditions.html"/>
+ <item name="Selector Scripts" href="examples/selector-scripts.html"/>
<item name="Using a Post Build Script" href="examples/post-build-script.html"/>
<item name="Preparing the Build Environment" href="examples/prepare-build-env.html"/>
<item name="Skipping Invocations" href="examples/skipping.html"/>
Re: svn commit: r827765 - in /maven/plugins/trunk/maven-invoker-plugin/src: it/selector-scripts/ it/selector-scripts/src/it/jre-version-match/ it/selector-scripts/src/it/jre-version-mismatch/ it/selector-scripts/src/it/os-family-match/ it/selector-scripts/...
Posted by Stephen Connolly <st...@gmail.com>.
will do... when I'm back on my netbook.
can I modify revprops on svn (eg svn:log)
Sent from my [rhymes with tryPod] ;-)
On 20 Oct 2009, at 20:39, Benjamin Bentmann
<be...@udo.edu> wrote:
> Hi Stephen,
>
>> Author: stephenc
>> Date: Tue Oct 20 19:18:02 2009
>> New Revision: 827765
>> URL: http://svn.apache.org/viewvc?rev=827765&view=rev
>> Log:
>> Implements MINVOKER-95
>
> See [0] for the recommended template.
>
> Also, please remember to set a "Fix Version" for the issue.
>
>> Added: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-
>> scripts/src/it/script-throw/selector.bsh
>> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/selector.bsh?rev=827765&view=auto
>> ===
>> ===
>> ===
>> =====================================================================
>> --- maven/plugins/trunk/maven-invoker-plugin/src/it/selector-
>> scripts/src/it/script-throw/selector.bsh (added)
>> +++ maven/plugins/trunk/maven-invoker-plugin/src/it/selector-
>> scripts/src/it/script-throw/selector.bsh Tue Oct 20 19:18:02 2009
>> @@ -0,0 +1,3 @@
>> +import java.io.*;
>> +
>> +throw new NullPointerException( "Bite me" );
>
> This file (and others) are missing svn:eol-eolstyle=native, see [0]
> for a ready-made template to configure your svn client.
>
>> /**
>> + * Relative path of a selector script to run prior to
>> executing the build. This script may be written with
>> + * either BeanShell or Groovy (since 1.3). If the file
>> extension is omitted (e.g. <code>prebuild</code>), the plugin
>> + * searches for the file by trying out the well-known
>> extensions <code>.bsh</code> and <code>.groovy</code>. If this
>> + * script exists for a particular project but returns any non-
>> null value different from <code>true</code> or throws
>> + * an exception, the corresponding build is flagged as
>> skipped. In this case, none of the pre-build hook script, + *
>> Maven nor the post-build hook script will be invoked.
>> + *
>> + * @parameter expression="${invoker.selectorScript}" default-
>> value="selector"
>> + */
>> + private String selectorScript;
>
> The description of this parameter seems not to match the behavior
> you documented in the example.
>
> Please add a @since tag for this parameter to indicate its
> introduction.
>
>
> Benjamin
>
>
> [0] http://maven.apache.org/developers/conventions/svn.html
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org
Re: svn commit: r827765 - in /maven/plugins/trunk/maven-invoker-plugin/src:
it/selector-scripts/ it/selector-scripts/src/it/jre-version-match/ it/selector-scripts/src/it/jre-version-mismatch/
it/selector-scripts/src/it/os-family-match/ it/selector-scripts/...
Posted by Benjamin Bentmann <be...@udo.edu>.
Hi Stephen,
> Author: stephenc
> Date: Tue Oct 20 19:18:02 2009
> New Revision: 827765
>
> URL: http://svn.apache.org/viewvc?rev=827765&view=rev
> Log:
> Implements MINVOKER-95
See [0] for the recommended template.
Also, please remember to set a "Fix Version" for the issue.
> Added: maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/selector.bsh
> URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/selector.bsh?rev=827765&view=auto
> ==============================================================================
> --- maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/selector.bsh (added)
> +++ maven/plugins/trunk/maven-invoker-plugin/src/it/selector-scripts/src/it/script-throw/selector.bsh Tue Oct 20 19:18:02 2009
> @@ -0,0 +1,3 @@
> +import java.io.*;
> +
> +throw new NullPointerException( "Bite me" );
This file (and others) are missing svn:eol-eolstyle=native, see [0] for
a ready-made template to configure your svn client.
> /**
> + * Relative path of a selector script to run prior to executing the build. This script may be written with
> + * either BeanShell or Groovy (since 1.3). If the file extension is omitted (e.g. <code>prebuild</code>), the plugin
> + * searches for the file by trying out the well-known extensions <code>.bsh</code> and <code>.groovy</code>. If this
> + * script exists for a particular project but returns any non-null value different from <code>true</code> or throws
> + * an exception, the corresponding build is flagged as skipped. In this case, none of the pre-build hook script,
> + * Maven nor the post-build hook script will be invoked.
> + *
> + * @parameter expression="${invoker.selectorScript}" default-value="selector"
> + */
> + private String selectorScript;
The description of this parameter seems not to match the behavior you
documented in the example.
Please add a @since tag for this parameter to indicate its introduction.
Benjamin
[0] http://maven.apache.org/developers/conventions/svn.html
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org