You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/11/12 23:00:31 UTC

svn commit: r1201342 - /maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java

Author: olamy
Date: Sat Nov 12 22:00:31 2011
New Revision: 1201342

URL: http://svn.apache.org/viewvc?rev=1201342&view=rev
Log:
exception has changed in script interpreter component and a bit of formatting

Modified:
    maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java

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=1201342&r1=1201341&r2=1201342&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 Sat Nov 12 22:00:31 2011
@@ -19,66 +19,66 @@ package org.apache.maven.plugin.invoker;
  * under the License.
  */
 
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.Profile;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.invoker.model.BuildJob;
 import org.apache.maven.plugin.invoker.model.io.xpp3.BuildJobXpp3Writer;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.model.Model;
-import org.apache.maven.model.Profile;
-import org.apache.maven.shared.invoker.InvocationRequest;
-import org.apache.maven.shared.invoker.DefaultInvocationRequest;
-import org.apache.maven.shared.invoker.MavenCommandLineBuilder;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.settings.Settings;
 import org.apache.maven.shared.invoker.CommandLineConfigurationException;
+import org.apache.maven.shared.invoker.DefaultInvocationRequest;
+import org.apache.maven.shared.invoker.InvocationRequest;
 import org.apache.maven.shared.invoker.InvocationResult;
-import org.apache.maven.shared.invoker.MavenInvocationException;
 import org.apache.maven.shared.invoker.Invoker;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.settings.Settings;
+import org.apache.maven.shared.invoker.MavenCommandLineBuilder;
+import org.apache.maven.shared.invoker.MavenInvocationException;
 import org.apache.maven.shared.scriptinterpreter.RunErrorException;
 import org.apache.maven.shared.scriptinterpreter.RunFailureException;
 import org.apache.maven.shared.scriptinterpreter.ScriptRunner;
-import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.ReaderFactory;
-import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.interpolation.InterpolationException;
+import org.codehaus.plexus.interpolation.Interpolator;
+import org.codehaus.plexus.interpolation.MapBasedValueSource;
+import org.codehaus.plexus.interpolation.RegexBasedInterpolator;
 import org.codehaus.plexus.util.DirectoryScanner;
+import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.InterpolationFilterReader;
+import org.codehaus.plexus.util.ReaderFactory;
+import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.WriterFactory;
-import org.codehaus.plexus.interpolation.Interpolator;
-import org.codehaus.plexus.interpolation.RegexBasedInterpolator;
-import org.codehaus.plexus.interpolation.MapBasedValueSource;
-import org.codehaus.plexus.interpolation.InterpolationException;
 
-import java.io.IOException;
+import java.io.BufferedReader;
 import java.io.File;
-import java.io.Reader;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
-import java.io.Writer;
-import java.io.OutputStreamWriter;
+import java.io.IOException;
 import java.io.InputStream;
-import java.io.FileInputStream;
-import java.io.BufferedReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
-import java.util.ArrayList;
+import java.util.Locale;
+import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
-import java.util.TreeSet;
-import java.util.Map;
-import java.util.LinkedHashMap;
-import java.util.Arrays;
-import java.util.HashMap;
 import java.util.StringTokenizer;
-import java.util.Collections;
-import java.util.Locale;
+import java.util.TreeSet;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
-import java.text.DecimalFormat;
-import java.text.DecimalFormatSymbols;
 
 /**
  * Provides common code for mojos invoking sub builds.
@@ -167,10 +167,10 @@ public abstract class AbstractInvokerMoj
      * @since 1.2
      */
     private boolean cloneAllFiles;
-    
+
     /**
      * Ensure the {@link #cloneProjectsTo} directory is not polluted with files from earlier invoker runs.
-     * 
+     *
      * @parameter default-value="false"
      * @since 1.6
      */
@@ -240,12 +240,12 @@ public abstract class AbstractInvokerMoj
     private Invoker invoker;
 
     /**
-     * Relative path of a selector script to run prior in order to decide if the build should be executed. This script 
-     * may be written with either BeanShell or Groovy. If the file extension is omitted (e.g. <code>selector</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>, 
-     * 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. If this script throws an exception, the corresponding 
+     * Relative path of a selector script to run prior in order to decide if the build should be executed. This script
+     * may be written with either BeanShell or Groovy. If the file extension is omitted (e.g. <code>selector</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>,
+     * 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. If this script throws an exception, the corresponding
      * build is flagged as in error, and none of the pre-build hook script, Maven not the post-build hook script will
      * be invoked.
      *
@@ -461,7 +461,7 @@ public abstract class AbstractInvokerMoj
      * configuration. The values of the properties are filtered and may use expressions like
      * <code>${project.version}</code> to reference project properties or values from the parameter
      * {@link #filterProperties}. The snippet below describes the supported properties:
-     *
+     * <p/>
      * <pre>
      * # A comma or space separated list of goals/phases to execute, may
      * # specify an empty list to execute the default goal of the IT project
@@ -513,7 +513,7 @@ public abstract class AbstractInvokerMoj
      *
      * # A comma separated list of OS families on which this build job should be run.
      * # Since plugin version 1.4
-     * invoker.os.family = !windows, unix, mac 
+     * invoker.os.family = !windows, unix, mac
      *
      * # A comma separated list of Maven versions on which this build should be run.
      * # Since plugin version 1.5
@@ -524,17 +524,19 @@ public abstract class AbstractInvokerMoj
      * @since 1.2
      */
     private String invokerPropertiesFile;
-    
+
     /**
      * flag to enable show mvn version used for running its (cli option : -V,--show-version )
+     *
      * @parameter expression="${invoker.showVersion}" default-value="false"
      * @since 1.4
      */
     private boolean showVersion;
-    
+
     /**
      * number of threads for running tests in parallel.
      * This will be the number of maven forked process in parallel.
+     *
      * @parameter expression="${invoker.parrallelThreads}" default-value="1"
      * @since 1.6
      */
@@ -568,8 +570,10 @@ public abstract class AbstractInvokerMoj
     /**
      * Invokes Maven on the configured test projects.
      *
-     * @throws org.apache.maven.plugin.MojoExecutionException If the goal encountered severe errors.
-     * @throws org.apache.maven.plugin.MojoFailureException If any of the Maven builds failed.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If the goal encountered severe errors.
+     * @throws org.apache.maven.plugin.MojoFailureException
+     *          If any of the Maven builds failed.
      */
     public void execute()
         throws MojoExecutionException, MojoFailureException
@@ -577,15 +581,15 @@ public abstract class AbstractInvokerMoj
         if ( skipInvocation )
         {
             getLog().info( "Skipping invocation per configuration."
-                + " If this is incorrect, ensure the skipInvocation parameter is not set to true." );
+                               + " If this is incorrect, ensure the skipInvocation parameter is not set to true." );
             return;
         }
-        
+
         // done it here to prevent issues with concurrent access in case of parallel run
-        if (!disableReports && !reportsDirectory.exists() )
+        if ( !disableReports && !reportsDirectory.exists() )
         {
             reportsDirectory.mkdirs();
-        }        
+        }
 
         BuildJob[] buildJobs;
         if ( pom != null )
@@ -596,11 +600,11 @@ public abstract class AbstractInvokerMoj
             }
             catch ( IOException e )
             {
-                throw new MojoExecutionException( "Failed to discover projectsDirectory from pom File parameter."
-                    + " Reason: " + e.getMessage(), e );
+                throw new MojoExecutionException(
+                    "Failed to discover projectsDirectory from pom File parameter." + " Reason: " + e.getMessage(), e );
             }
 
-            buildJobs = new BuildJob[]{ new BuildJob( pom.getName(), BuildJob.Type.NORMAL )};
+            buildJobs = new BuildJob[]{ new BuildJob( pom.getName(), BuildJob.Type.NORMAL ) };
         }
         else
         {
@@ -610,12 +614,12 @@ public abstract class AbstractInvokerMoj
             }
             catch ( final IOException e )
             {
-                throw new MojoExecutionException( "Error retrieving POM list from includes, excludes, "
-                                + "and projects directory. Reason: " + e.getMessage(), e );
+                throw new MojoExecutionException(
+                    "Error retrieving POM list from includes, excludes, " + "and projects directory. Reason: "
+                        + e.getMessage(), e );
             }
         }
 
-
         if ( ( buildJobs == null ) || ( buildJobs.length < 1 ) )
         {
             getLog().info( "No projects were selected for execution." );
@@ -624,20 +628,21 @@ public abstract class AbstractInvokerMoj
 
         if ( StringUtils.isEmpty( encoding ) )
         {
-            getLog().warn(
-                           "File encoding has not been set, using platform encoding " + ReaderFactory.FILE_ENCODING
+            getLog().warn( "File encoding has not been set, using platform encoding " + ReaderFactory.FILE_ENCODING
                                + ", i.e. build is platform dependent!" );
         }
 
         final List<String> scriptClassPath;
-        if( addTestClassPath )
+        if ( addTestClassPath )
         {
             scriptClassPath = new ArrayList<String>( testClassPath );
-            for( Artifact pluginArtifact : pluginArtifacts )
+            for ( Artifact pluginArtifact : pluginArtifacts )
             {
                 scriptClassPath.remove( pluginArtifact.getFile().getAbsolutePath() );
             }
-        } else {
+        }
+        else
+        {
             scriptClassPath = null;
         }
         scriptRunner = new ScriptRunner( getLog() );
@@ -670,7 +675,7 @@ public abstract class AbstractInvokerMoj
 
     /**
      * Processes the results of invoking the build jobs.
-     * 
+     *
      * @param invokerSession The session with the build jobs, must not be <code>null</code>.
      * @throws MojoFailureException If the mojo had failed as a result of invoking the build jobs.
      * @since 1.4
@@ -702,17 +707,19 @@ public abstract class AbstractInvokerMoj
      * Collects all projects locally reachable from the specified project. The method will as such try to read the POM
      * and recursively follow its parent/module elements.
      *
-     * @param projectsDir The base directory of all projects, must not be <code>null</code>.
-     * @param projectPath The relative path of the current project, can denote either the POM or its base directory,
-     *            must not be <code>null</code>.
+     * @param projectsDir  The base directory of all projects, must not be <code>null</code>.
+     * @param projectPath  The relative path of the current project, can denote either the POM or its base directory,
+     *                     must not be <code>null</code>.
      * @param projectPaths The set of already collected projects to add new projects to, must not be <code>null</code>.
-     *            This set will hold the relative paths to either a POM file or a project base directory.
-     * @param included A flag indicating whether the specified project has been explicitly included via the parameter
-     *            {@link #pomIncludes}. Such projects will always be added to the result set even if there is no
-     *            corresponding POM.
-     * @throws org.apache.maven.plugin.MojoExecutionException If the project tree could not be traversed.
+     *                     This set will hold the relative paths to either a POM file or a project base directory.
+     * @param included     A flag indicating whether the specified project has been explicitly included via the parameter
+     *                     {@link #pomIncludes}. Such projects will always be added to the result set even if there is no
+     *                     corresponding POM.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If the project tree could not be traversed.
      */
-    private void collectProjects( File projectsDir, String projectPath, Collection<String> projectPaths, boolean included )
+    private void collectProjects( File projectsDir, String projectPath, Collection<String> projectPaths,
+                                  boolean included )
         throws MojoExecutionException
     {
         projectPath = projectPath.replace( '\\', '/' );
@@ -766,7 +773,7 @@ public abstract class AbstractInvokerMoj
 
             modulePaths.addAll( model.getModules() );
 
-            for ( Profile profile : (List<Profile>) model.getProfiles())
+            for ( Profile profile : (List<Profile>) model.getProfiles() )
             {
                 modulePaths.addAll( profile.getModules() );
             }
@@ -791,8 +798,9 @@ public abstract class AbstractInvokerMoj
      * by a path to a POM file or merely by a path to a base directory. During cloning, the POM files will be filtered.
      *
      * @param projectPaths The paths to the projects to clone, relative to the projects directory, must not be
-     *            <code>null</code> nor contain <code>null</code> elements.
-     * @throws org.apache.maven.plugin.MojoExecutionException If the the projects could not be copied/filtered.
+     *                     <code>null</code> nor contain <code>null</code> elements.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If the the projects could not be copied/filtered.
      */
     private void cloneProjects( Collection<String> projectPaths )
         throws MojoExecutionException
@@ -805,8 +813,8 @@ public abstract class AbstractInvokerMoj
             }
             catch ( IOException e )
             {
-                throw new MojoExecutionException( "Could not clean the cloneProjectsTo directory. Reason: "
-                    + e.getMessage(), e );
+                throw new MojoExecutionException(
+                    "Could not clean the cloneProjectsTo directory. Reason: " + e.getMessage(), e );
             }
         }
 
@@ -877,8 +885,9 @@ public abstract class AbstractInvokerMoj
         }
         catch ( IOException e )
         {
-            throw new MojoExecutionException( "Failed to clone projects from: " + projectsDirectory + " to: "
-                + cloneProjectsTo + ". Reason: " + e.getMessage(), e );
+            throw new MojoExecutionException(
+                "Failed to clone projects from: " + projectsDirectory + " to: " + cloneProjectsTo + ". Reason: "
+                    + e.getMessage(), e );
         }
 
         // filter cloned POMs
@@ -912,7 +921,7 @@ public abstract class AbstractInvokerMoj
      * Copied a directory structure with deafault exclusions (.svn, CVS, etc)
      *
      * @param sourceDir The source directory to copy, must not be <code>null</code>.
-     * @param destDir The target directory to copy to, must not be <code>null</code>.
+     * @param destDir   The target directory to copy to, must not be <code>null</code>.
      * @throws java.io.IOException If the directory structure could not be copied.
      */
     private void copyDirectoryStructure( File sourceDir, File destDir )
@@ -950,9 +959,9 @@ public abstract class AbstractInvokerMoj
      * Determines whether the specified sub path has already been cloned, i.e. whether one of its ancestor directories
      * was already cloned.
      *
-     * @param subpath The sub path to check, must not be <code>null</code>.
+     * @param subpath        The sub path to check, must not be <code>null</code>.
      * @param clonedSubpaths The list of already cloned paths, must not be <code>null</code> nor contain
-     *            <code>null</code> elements.
+     *                       <code>null</code> elements.
      * @return <code>true</code> if the specified path has already been cloned, <code>false</code> otherwise.
      */
     static boolean alreadyCloned( String subpath, List<String> clonedSubpaths )
@@ -972,8 +981,9 @@ public abstract class AbstractInvokerMoj
      * Runs the specified build jobs.
      *
      * @param projectsDir The base directory of all projects, must not be <code>null</code>.
-     * @param buildJobs The build jobs to run must not be <code>null</code> nor contain <code>null</code> elements.
-     * @throws org.apache.maven.plugin.MojoExecutionException If any build could not be launched.
+     * @param buildJobs   The build jobs to run must not be <code>null</code> nor contain <code>null</code> elements.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If any build could not be launched.
      */
     private void runBuilds( final File projectsDir, BuildJob[] buildJobs )
         throws MojoExecutionException
@@ -1035,7 +1045,7 @@ public abstract class AbstractInvokerMoj
                 {
                     throw new MojoExecutionException( e.getMessage(), e );
                 }
-                
+
             }
             else
             {
@@ -1058,11 +1068,12 @@ public abstract class AbstractInvokerMoj
     /**
      * Runs the specified project.
      *
-     * @param projectsDir The base directory of all projects, must not be <code>null</code>.
-     * @param buildJob The build job to run, must not be <code>null</code>.
+     * @param projectsDir  The base directory of all projects, must not be <code>null</code>.
+     * @param buildJob     The build job to run, must not be <code>null</code>.
      * @param settingsFile The (already interpolated) user settings file for the build, may be <code>null</code> to use
-     *            the current user settings.
-     * @throws org.apache.maven.plugin.MojoExecutionException If the project could not be launched.
+     *                     the current user settings.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If the project could not be launched.
      */
     private void runBuild( File projectsDir, BuildJob buildJob, File settingsFile )
         throws MojoExecutionException
@@ -1189,7 +1200,7 @@ public abstract class AbstractInvokerMoj
 
     /**
      * Determines whether selector conditions of the specified invoker properties match the current environment.
-     * 
+     *
      * @param invokerProperties The invoker properties to check, must not be <code>null</code>.
      * @return <code>true</code> if the job corresponding to the properties should be run, <code>false</code> otherwise.
      */
@@ -1217,7 +1228,8 @@ public abstract class AbstractInvokerMoj
      * Writes the XML report for the specified build job unless report generation has been disabled.
      *
      * @param buildJob The build job whose report should be written, must not be <code>null</code>.
-     * @throws org.apache.maven.plugin.MojoExecutionException If the report could not be written.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If the report could not be written.
      */
     private void writeBuildReport( BuildJob buildJob )
         throws MojoExecutionException
@@ -1269,15 +1281,17 @@ public abstract class AbstractInvokerMoj
     /**
      * Runs the specified project.
      *
-     * @param basedir The base directory of the project, must not be <code>null</code>.
-     * @param pomFile The (already interpolated) POM file, may be <code>null</code> for a POM-less Maven invocation.
-     * @param settingsFile The (already interpolated) user settings file for the build, may be <code>null</code> to use
-     *            the current user settings.
+     * @param basedir           The base directory of the project, must not be <code>null</code>.
+     * @param pomFile           The (already interpolated) POM file, may be <code>null</code> for a POM-less Maven invocation.
+     * @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.shared.scriptinterpreter.RunFailureException If either a hook script or the build itself failed.
+     *         the project should be skipped.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If the project could not be launched.
+     * @throws org.apache.maven.shared.scriptinterpreter.RunFailureException
+     *          If either a hook script or the build itself failed.
      */
     private boolean runBuild( File basedir, File pomFile, File settingsFile, InvokerProperties invokerProperties )
         throws MojoExecutionException, RunFailureException
@@ -1304,8 +1318,8 @@ public abstract class AbstractInvokerMoj
         {
             try
             {
-                scriptRunner.run( "selector script", basedir, selectorScript, context, logger,
-                                  BuildJob.Result.SKIPPED, false );
+                scriptRunner.run( "selector script", basedir, selectorScript, context, logger, BuildJob.Result.SKIPPED,
+                                  false );
             }
             catch ( RunErrorException e )
             {
@@ -1315,7 +1329,7 @@ public abstract class AbstractInvokerMoj
             {
                 return false;
             }
- 
+
             scriptRunner.run( "pre-build script", basedir, preBuildHookScript, context, logger,
                               BuildJob.Result.FAILURE_PRE_HOOK, false );
 
@@ -1351,7 +1365,7 @@ public abstract class AbstractInvokerMoj
                 request.setJavaHome( javaHome );
             }
 
-            for ( int invocationIndex = 1;; invocationIndex++ )
+            for ( int invocationIndex = 1; ; invocationIndex++ )
             {
                 if ( invocationIndex > 1 && !invokerProperties.isInvocationDefined( invocationIndex ) )
                 {
@@ -1399,7 +1413,7 @@ public abstract class AbstractInvokerMoj
                 {
                     getLog().debug( "Error invoking Maven: " + e.getMessage(), e );
                     throw new RunFailureException( "Maven invocation failed. " + e.getMessage(),
-                                                     BuildJob.Result.FAILURE_BUILD );
+                                                   BuildJob.Result.FAILURE_BUILD );
                 }
 
                 verify( result, invocationIndex, invokerProperties, logger );
@@ -1408,6 +1422,10 @@ public abstract class AbstractInvokerMoj
             scriptRunner.run( "post-build script", basedir, postBuildHookScript, context, logger,
                               BuildJob.Result.FAILURE_POST_HOOK, true );
         }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( e.getMessage(), e );
+        }
         finally
         {
             if ( logger != null )
@@ -1423,7 +1441,8 @@ public abstract class AbstractInvokerMoj
      *
      * @param basedir The base directory of the project, must not be <code>null</code>.
      * @return The build logger or <code>null</code> if logging has been disabled.
-     * @throws org.apache.maven.plugin.MojoExecutionException If the log file could not be created.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If the log file could not be created.
      */
     private FileLogger setupLogger( File basedir )
         throws MojoExecutionException
@@ -1458,11 +1477,12 @@ public abstract class AbstractInvokerMoj
     /**
      * Gets the system properties to use for the specified project.
      *
-     * @param basedir The base directory of the project, must not be <code>null</code>.
+     * @param basedir  The base directory of the project, must not be <code>null</code>.
      * @param filename The filename to the properties file to load, may be <code>null</code> to use the default path
-     *            given by {@link #testPropertiesFile}.
+     *                 given by {@link #testPropertiesFile}.
      * @return The system properties to use, may be empty but never <code>null</code>.
-     * @throws org.apache.maven.plugin.MojoExecutionException If the properties file exists but could not be read.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If the properties file exists but could not be read.
      */
     private Properties getSystemProperties( final File basedir, final String filename )
         throws MojoExecutionException
@@ -1516,11 +1536,12 @@ public abstract class AbstractInvokerMoj
     /**
      * Verifies the invocation result.
      *
-     * @param result The invocation result to check, must not be <code>null</code>.
-     * @param invocationIndex The index of the invocation for which to check the exit code, must not be negative.
+     * @param result            The invocation result to check, must not be <code>null</code>.
+     * @param invocationIndex   The index of the invocation for which to check the exit code, must not be negative.
      * @param invokerProperties The invoker properties used to check the exit code, must not be <code>null</code>.
-     * @param logger The build logger, may be <code>null</code> if logging is disabled.
-     * @throws org.apache.maven.shared.scriptinterpreter.RunFailureException If the invocation result indicates a build failure.
+     * @param logger            The build logger, may be <code>null</code> if logging is disabled.
+     * @throws org.apache.maven.shared.scriptinterpreter.RunFailureException
+     *          If the invocation result indicates a build failure.
      */
     private void verify( InvocationResult result, int invocationIndex, InvokerProperties invokerProperties,
                          FileLogger logger )
@@ -1528,8 +1549,8 @@ public abstract class AbstractInvokerMoj
     {
         if ( result.getExecutionException() != null )
         {
-            throw new RunFailureException( "The Maven invocation failed. "
-                + result.getExecutionException().getMessage(), BuildJob.Result.ERROR );
+            throw new RunFailureException(
+                "The Maven invocation failed. " + result.getExecutionException().getMessage(), BuildJob.Result.ERROR );
         }
         else if ( !invokerProperties.isExpectedResult( result.getExitCode(), invocationIndex ) )
         {
@@ -1554,7 +1575,8 @@ public abstract class AbstractInvokerMoj
      *
      * @param basedir The base directory of the project, must not be <code>null</code>.
      * @return The list of goals to run when building the project, may be empty but never <code>null</code>.
-     * @throws org.apache.maven.plugin.MojoExecutionException If the profile file could not be read.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If the profile file could not be read.
      */
     List<String> getGoals( final File basedir )
         throws MojoExecutionException
@@ -1574,7 +1596,8 @@ public abstract class AbstractInvokerMoj
      *
      * @param basedir The base directory of the project, must not be <code>null</code>.
      * @return The list of profiles to activate when building the project, may be empty but never <code>null</code>.
-     * @throws org.apache.maven.plugin.MojoExecutionException If the profile file could not be read.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If the profile file could not be read.
      */
     List<String> getProfiles( File basedir )
         throws MojoExecutionException
@@ -1602,7 +1625,7 @@ public abstract class AbstractInvokerMoj
 
         if ( ( pom != null ) && pom.exists() )
         {
-            buildJobs = new BuildJob[] { new BuildJob( pom.getAbsolutePath(), BuildJob.Type.NORMAL ) };
+            buildJobs = new BuildJob[]{ new BuildJob( pom.getAbsolutePath(), BuildJob.Type.NORMAL ) };
         }
         else if ( invokerTest != null )
         {
@@ -1621,7 +1644,8 @@ public abstract class AbstractInvokerMoj
         }
         else
         {
-            List<String> excludes = ( pomExcludes != null ) ? new ArrayList<String>( pomExcludes ) : new ArrayList<String>();
+            List<String> excludes =
+                ( pomExcludes != null ) ? new ArrayList<String>( pomExcludes ) : new ArrayList<String>();
             if ( this.settingsFile != null )
             {
                 String exclude = relativizePath( this.settingsFile, projectsDirectory.getCanonicalPath() );
@@ -1666,7 +1690,7 @@ public abstract class AbstractInvokerMoj
      *
      * @param includes The include patterns for the scanner, may be <code>null</code>.
      * @param excludes The exclude patterns for the scanner, may be <code>null</code> to exclude nothing.
-     * @param type The type to assign to the resulting build jobs, must not be <code>null</code>.
+     * @param type     The type to assign to the resulting build jobs, must not be <code>null</code>.
      * @return The build jobs matching the patterns, never <code>null</code>.
      * @throws java.io.IOException If the project directory could not be scanned.
      */
@@ -1723,7 +1747,7 @@ public abstract class AbstractInvokerMoj
      * it is returned as is.
      *
      * @param buildJobs The build jobs whose project paths should be relativized, must not be <code>null</code> nor
-     *            contain <code>null</code> elements.
+     *                  contain <code>null</code> elements.
      * @throws java.io.IOException If any path could not be relativized.
      */
     private void relativizeProjectPaths( BuildJob[] buildJobs )
@@ -1757,7 +1781,7 @@ public abstract class AbstractInvokerMoj
      * Relativizes the specified path against the given base directory. Besides relativization, the returned path will
      * also be normalized, e.g. directory references like ".." will be removed.
      *
-     * @param path The path to relativize, must not be <code>null</code>.
+     * @param path    The path to relativize, must not be <code>null</code>.
      * @param basedir The (canonical path of the) base directory to relativize against, must not be <code>null</code>.
      * @return The relative path in normal form or <code>null</code> if the input path does not denote a sub path of the
      *         base directory.
@@ -1835,11 +1859,11 @@ public abstract class AbstractInvokerMoj
      * Gets goal/profile names for the specified project, either directly from the plugin configuration or from an
      * external token file.
      *
-     * @param basedir The base directory of the test project, must not be <code>null</code>.
-     * @param filename The (simple) name of an optional file in the project base directory from which to read
-     *            goals/profiles, may be <code>null</code>.
+     * @param basedir       The base directory of the test project, must not be <code>null</code>.
+     * @param filename      The (simple) name of an optional file in the project base directory from which to read
+     *                      goals/profiles, may be <code>null</code>.
      * @param defaultTokens The list of tokens to return in case the specified token file does not exist, may be
-     *            <code>null</code>.
+     *                      <code>null</code>.
      * @return The list of goal/profile names, may be empty but never <code>null</code>.
      * @throws java.io.IOException If the token file exists but could not be parsed.
      */
@@ -1921,10 +1945,11 @@ public abstract class AbstractInvokerMoj
      * Interpolates the specified POM/settings file to a temporary file. The destination file may be same as the input
      * file, i.e. interpolation can be performed in-place.
      *
-     * @param originalFile The XML file to interpolate, must not be <code>null</code>.
+     * @param originalFile     The XML file to interpolate, must not be <code>null</code>.
      * @param interpolatedFile The target file to write the interpolated contents of the original file to, must not be
-     *            <code>null</code>.
-     * @throws org.apache.maven.plugin.MojoExecutionException If the target file could not be created.
+     *                         <code>null</code>.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If the target file could not be created.
      */
     void buildInterpolatedFile( File originalFile, File interpolatedFile )
         throws MojoExecutionException
@@ -1973,7 +1998,8 @@ public abstract class AbstractInvokerMoj
      *
      * @param projectDirectory The base directory of the IT project, must not be <code>null</code>.
      * @return The invoker properties, may be empty but never <code>null</code>.
-     * @throws org.apache.maven.plugin.MojoExecutionException If an I/O error occurred during reading the properties.
+     * @throws org.apache.maven.plugin.MojoExecutionException
+     *          If an I/O error occurred during reading the properties.
      */
     private InvokerProperties getInvokerProperties( final File projectDirectory )
         throws MojoExecutionException
@@ -2002,7 +2028,7 @@ public abstract class AbstractInvokerMoj
 
             Interpolator interpolator = new RegexBasedInterpolator();
             interpolator.addValueSource( new MapBasedValueSource( getInterpolationValueSource() ) );
-            for ( String key : (Set<String>) ((Map) props).keySet() )
+            for ( String key : (Set<String>) ( (Map) props ).keySet() )
             {
                 String value = props.getProperty( key );
                 try
@@ -2019,7 +2045,7 @@ public abstract class AbstractInvokerMoj
         }
         return new InvokerProperties( props );
     }
-    
+
     protected boolean isParrallelRun()
     {
         return parrallelThreads > 1;