Coverage Report - org.apache.maven.plugin.invoker.HelpMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
HelpMojo
0 %
0/466
0 %
0/86
8,167
 
 1  
 package org.apache.maven.plugin.invoker;
 2  
 
 3  
 import java.util.ArrayList;
 4  
 import java.util.Iterator;
 5  
 import java.util.List;
 6  
 
 7  
 import org.apache.maven.plugin.AbstractMojo;
 8  
 import org.apache.maven.plugin.MojoExecutionException;
 9  
 
 10  
 /**
 11  
  * Display help information on maven-invoker-plugin.<br/> Call <pre>  mvn invoker:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</pre> to display parameter details.
 12  
  *
 13  
  * @version generated on Mon May 21 15:45:36 CEST 2012
 14  
  * @author org.apache.maven.tools.plugin.generator.PluginHelpGenerator (version 2.8)
 15  
  * @goal help
 16  
  * @requiresProject false
 17  
  * @threadSafe
 18  
  */
 19  
 @SuppressWarnings( "all" )
 20  0
 public class HelpMojo
 21  
     extends AbstractMojo
 22  
 {
 23  
     /**
 24  
      * If <code>true</code>, display all settable properties for each goal.
 25  
      * 
 26  
      * @parameter expression="${detail}" default-value="false"
 27  
      */
 28  
     private boolean detail;
 29  
 
 30  
     /**
 31  
      * The name of the goal for which to show help. If unspecified, all goals will be displayed.
 32  
      * 
 33  
      * @parameter expression="${goal}"
 34  
      */
 35  
     private java.lang.String goal;
 36  
 
 37  
     /**
 38  
      * The maximum length of a display line, should be positive.
 39  
      * 
 40  
      * @parameter expression="${lineLength}" default-value="80"
 41  
      */
 42  
     private int lineLength;
 43  
 
 44  
     /**
 45  
      * The number of spaces per indentation level, should be positive.
 46  
      * 
 47  
      * @parameter expression="${indentSize}" default-value="2"
 48  
      */
 49  
     private int indentSize;
 50  
 
 51  
 
 52  
     /** {@inheritDoc} */
 53  
     public void execute()
 54  
         throws MojoExecutionException
 55  
     {
 56  0
         if ( lineLength <= 0 )
 57  
         {
 58  0
             getLog().warn( "The parameter 'lineLength' should be positive, using '80' as default." );
 59  0
             lineLength = 80;
 60  
         }
 61  0
         if ( indentSize <= 0 )
 62  
         {
 63  0
             getLog().warn( "The parameter 'indentSize' should be positive, using '2' as default." );
 64  0
             indentSize = 2;
 65  
         }
 66  
 
 67  0
         StringBuffer sb = new StringBuffer();
 68  
 
 69  0
         append( sb, "org.apache.maven.plugins:maven-invoker-plugin:1.6", 0 );
 70  0
         append( sb, "", 0 );
 71  
 
 72  0
         append( sb, "Maven Invoker Plugin", 0 );
 73  0
         append( sb, "The Maven Invoker Plugin is used to run a set of Maven projects. The plugin can determine whether each project execution is successful, and optionally can verify the output generated from a given project execution.", 1 );
 74  0
         append( sb, "", 0 );
 75  
 
 76  0
         if ( goal == null || goal.length() <= 0 )
 77  
         {
 78  0
             append( sb, "This plugin has 6 goals:", 0 );
 79  0
             append( sb, "", 0 );
 80  
         }
 81  
 
 82  0
         if ( goal == null || goal.length() <= 0 || "help".equals( goal ) )
 83  
         {
 84  0
             append( sb, "invoker:help", 0 );
 85  0
             append( sb, "Display help information on maven-invoker-plugin.\nCall\n\u00a0\u00a0mvn\u00a0invoker:help\u00a0-Ddetail=true\u00a0-Dgoal=<goal-name>\nto display parameter details.", 1 );
 86  0
             append( sb, "", 0 );
 87  0
             if ( detail )
 88  
             {
 89  0
                 append( sb, "Available parameters:", 1 );
 90  0
                 append( sb, "", 0 );
 91  
 
 92  0
                 append( sb, "detail (Default: false)", 2 );
 93  0
                 append( sb, "If true, display all settable properties for each goal.", 3 );
 94  0
                 append( sb, "Expression: ${detail}", 3 );
 95  0
                 append( sb, "", 0 );
 96  
 
 97  0
                 append( sb, "goal", 2 );
 98  0
                 append( sb, "The name of the goal for which to show help. If unspecified, all goals will be displayed.", 3 );
 99  0
                 append( sb, "Expression: ${goal}", 3 );
 100  0
                 append( sb, "", 0 );
 101  
 
 102  0
                 append( sb, "indentSize (Default: 2)", 2 );
 103  0
                 append( sb, "The number of spaces per indentation level, should be positive.", 3 );
 104  0
                 append( sb, "Expression: ${indentSize}", 3 );
 105  0
                 append( sb, "", 0 );
 106  
 
 107  0
                 append( sb, "lineLength (Default: 80)", 2 );
 108  0
                 append( sb, "The maximum length of a display line, should be positive.", 3 );
 109  0
                 append( sb, "Expression: ${lineLength}", 3 );
 110  0
                 append( sb, "", 0 );
 111  
             }
 112  
         }
 113  
 
 114  0
         if ( goal == null || goal.length() <= 0 || "install".equals( goal ) )
 115  
         {
 116  0
             append( sb, "invoker:install", 0 );
 117  0
             append( sb, "Installs the project artifacts of the main build into the local repository as a preparation to run the sub projects. More precisely, all artifacts of the project itself, all its locally reachable parent POMs and all its dependencies from the reactor will be installed to the local repository.", 1 );
 118  0
             append( sb, "", 0 );
 119  0
             if ( detail )
 120  
             {
 121  0
                 append( sb, "Available parameters:", 1 );
 122  0
                 append( sb, "", 0 );
 123  
 
 124  0
                 append( sb, "extraArtifacts", 2 );
 125  0
                 append( sb, "Extra dependencies that need to be installed on the local repository.\nFormat:\ngroupId:artifactId:version:type:classifier\nExamples:\norg.apache.maven.plugins:maven-clean-plugin:2.4:maven-plugin\norg.apache.maven.plugins:maven-clean-plugin:2.4:jar:javadoc\nIf the type is \'maven-plugin\' the plugin will try to resolve the artifact using plugin remote repositories, instead of using artifact remote repositories.", 3 );
 126  0
                 append( sb, "", 0 );
 127  
 
 128  0
                 append( sb, "localRepositoryPath", 2 );
 129  0
                 append( sb, "The path to the local repository into which the project artifacts should be installed for the integration tests. If not set, the regular local repository will be used. To prevent soiling of your regular local repository with possibly broken artifacts, it is strongly recommended to use an isolated repository for the integration tests (e.g. ${project.build.directory}/it-repo).", 3 );
 130  0
                 append( sb, "Expression: ${invoker.localRepositoryPath}", 3 );
 131  0
                 append( sb, "", 0 );
 132  
 
 133  0
                 append( sb, "skipInstallation (Default: false)", 2 );
 134  0
                 append( sb, "A flag used to disable the installation procedure. This is primarily intended for usage from the command line to occasionally adjust the build.", 3 );
 135  0
                 append( sb, "Expression: ${invoker.skip}", 3 );
 136  0
                 append( sb, "", 0 );
 137  
             }
 138  
         }
 139  
 
 140  0
         if ( goal == null || goal.length() <= 0 || "integration-test".equals( goal ) )
 141  
         {
 142  0
             append( sb, "invoker:integration-test", 0 );
 143  0
             append( sb, "Searches for integration test Maven projects, and executes each, collecting a log in the project directory, will never fail the build, designed to be used in conjunction with the verify mojo.", 1 );
 144  0
             append( sb, "", 0 );
 145  0
             if ( detail )
 146  
             {
 147  0
                 append( sb, "Available parameters:", 1 );
 148  0
                 append( sb, "", 0 );
 149  
 
 150  0
                 append( sb, "addTestClassPath (Default: false)", 2 );
 151  0
                 append( sb, "A flag whether the test class path of the project under test should be included in the class path of the pre-/post-build scripts. If set to false, the class path of script interpreter consists only of the runtime dependencies of the Maven Invoker Plugin. If set the true, the project\'s test class path will be prepended to the interpreter class path. Among others, this feature allows the scripts to access utility classes from the test sources of your project.", 3 );
 152  0
                 append( sb, "Expression: ${invoker.addTestClassPath}", 3 );
 153  0
                 append( sb, "", 0 );
 154  
 
 155  0
                 append( sb, "cloneAllFiles (Default: false)", 2 );
 156  0
                 append( sb, "Some files are normally excluded when copying the IT projects from the directory specified by the parameter projectsDirectory to the directory given by cloneProjectsTo (e.g. .svn, CVS, *~, etc). Setting this parameter to true will cause all files to be copied to the cloneProjectsTo directory.", 3 );
 157  0
                 append( sb, "", 0 );
 158  
 
 159  0
                 append( sb, "cloneClean (Default: false)", 2 );
 160  0
                 append( sb, "Ensure the cloneProjectsTo directory is not polluted with files from earlier invoker runs.", 3 );
 161  0
                 append( sb, "", 0 );
 162  
 
 163  0
                 append( sb, "cloneProjectsTo", 2 );
 164  0
                 append( sb, "Directory to which projects should be cloned prior to execution. If not specified, each integration test will be run in the directory in which the corresponding IT POM was found. In this case, you most likely want to configure your SCM to ignore target and build.log in the test\'s base directory.", 3 );
 165  0
                 append( sb, "", 0 );
 166  
 
 167  0
                 append( sb, "debug (Default: false)", 2 );
 168  0
                 append( sb, "Whether to show debug statements in the build output.", 3 );
 169  0
                 append( sb, "Expression: ${invoker.debug}", 3 );
 170  0
                 append( sb, "", 0 );
 171  
 
 172  0
                 append( sb, "disableReports (Default: false)", 2 );
 173  0
                 append( sb, "A flag to disable the generation of build reports.", 3 );
 174  0
                 append( sb, "Expression: ${invoker.disableReports}", 3 );
 175  0
                 append( sb, "", 0 );
 176  
 
 177  0
                 append( sb, "encoding (Default: ${project.build.sourceEncoding})", 2 );
 178  0
                 append( sb, "The file encoding for the pre-/post-build scripts and the list files for goals and profiles.", 3 );
 179  0
                 append( sb, "Expression: ${encoding}", 3 );
 180  0
                 append( sb, "", 0 );
 181  
 
 182  0
                 append( sb, "filterProperties", 2 );
 183  0
                 append( sb, "A list of additional properties which will be used to filter tokens in POMs and goal files.", 3 );
 184  0
                 append( sb, "", 0 );
 185  
 
 186  0
                 append( sb, "goals", 2 );
 187  0
                 append( sb, "The list of goals to execute on each project. Default value is: package.", 3 );
 188  0
                 append( sb, "", 0 );
 189  
 
 190  0
                 append( sb, "goalsFile (Default: goals.txt)", 2 );
 191  0
                 append( sb, "Deprecated. As of version 1.2, the key invoker.goals from the properties file specified by the parameter invokerPropertiesFile should be used instead.", 3 );
 192  0
                 append( sb, "", 0 );
 193  0
                 append( sb, "The name of the project-specific file that contains the enumeration of goals to execute for that test.", 3 );
 194  0
                 append( sb, "Expression: ${invoker.goalsFile}", 3 );
 195  0
                 append( sb, "", 0 );
 196  
 
 197  0
                 append( sb, "interpolationsProperties", 2 );
 198  0
                 append( sb, "Deprecated. As of version 1.3, the parameter filterProperties should be used instead.", 3 );
 199  0
                 append( sb, "", 0 );
 200  0
                 append( sb, "List of properties which will be used to interpolate goal files.", 3 );
 201  0
                 append( sb, "", 0 );
 202  
 
 203  0
                 append( sb, "invokerPropertiesFile (Default: invoker.properties)", 2 );
 204  0
                 append( sb, "The name of an optional project-specific file that contains properties used to specify settings for an individual Maven invocation. Any property present in the file will override the corresponding setting from the plugin configuration. The values of the properties are filtered and may use expressions like ${project.version} to reference project properties or values from the parameter filterProperties. The snippet below describes the supported properties:\n#\u00a0A\u00a0comma\u00a0or\u00a0space\u00a0separated\u00a0list\u00a0of\u00a0goals/phases\u00a0to\u00a0execute,\u00a0may\n#\u00a0specify\u00a0an\u00a0empty\u00a0list\u00a0to\u00a0execute\u00a0the\u00a0default\u00a0goal\u00a0of\u00a0the\u00a0IT\u00a0project\ninvoker.goals\u00a0=\u00a0clean\u00a0install\n\n#\u00a0Optionally,\u00a0a\u00a0list\u00a0of\u00a0goals\u00a0to\u00a0run\u00a0during\u00a0further\u00a0invocations\u00a0of\u00a0Maven\ninvoker.goals.2\u00a0=\u00a0${project.groupId}:${project.artifactId}:${project.version}:run\n\n#\u00a0A\u00a0comma\u00a0or\u00a0space\u00a0separated\u00a0list\u00a0of\u00a0profiles\u00a0to\u00a0activate\ninvoker.profiles\u00a0=\u00a0its,jdk15\n\n#\u00a0The\u00a0path\u00a0to\u00a0an\u00a0alternative\u00a0POM\u00a0or\u00a0base\u00a0directory\u00a0to\u00a0invoke\u00a0Maven\u00a0on,\u00a0defaults\u00a0to\u00a0the\n#\u00a0project\u00a0that\u00a0was\u00a0originally\u00a0specified\u00a0in\u00a0the\u00a0plugin\u00a0configuration\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.project\u00a0=\u00a0sub-module\n\n#\u00a0The\u00a0value\u00a0for\u00a0the\u00a0environment\u00a0variable\u00a0MAVEN_OPTS\ninvoker.mavenOpts\u00a0=\u00a0-Dfile.encoding=UTF-16\u00a0-Xms32m\u00a0-Xmx256m\n\n#\u00a0Possible\u00a0values\u00a0are\u00a0\'fail-fast\'\u00a0(default),\u00a0\'fail-at-end\'\u00a0and\u00a0\'fail-never\'\ninvoker.failureBehavior\u00a0=\u00a0fail-never\n\n#\u00a0The\u00a0expected\u00a0result\u00a0of\u00a0the\u00a0build,\u00a0possible\u00a0values\u00a0are\u00a0\'success\'\u00a0(default)\u00a0and\u00a0\'failure\'\ninvoker.buildResult\u00a0=\u00a0failure\n\n#\u00a0A\u00a0boolean\u00a0value\u00a0controlling\u00a0the\u00a0aggregator\u00a0mode\u00a0of\u00a0Maven,\u00a0defaults\u00a0to\u00a0\'false\'\ninvoker.nonRecursive\u00a0=\u00a0true\n\n#\u00a0A\u00a0boolean\u00a0value\u00a0controlling\u00a0the\u00a0network\u00a0behavior\u00a0of\u00a0Maven,\u00a0defaults\u00a0to\u00a0\'false\'\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.offline\u00a0=\u00a0true\n\n#\u00a0The\u00a0path\u00a0to\u00a0the\u00a0properties\u00a0file\u00a0from\u00a0which\u00a0to\u00a0load\u00a0system\u00a0properties,\u00a0defaults\u00a0to\u00a0the\n#\u00a0filename\u00a0given\u00a0by\u00a0the\u00a0plugin\u00a0parameter\u00a0testPropertiesFile\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.systemPropertiesFile\u00a0=\u00a0test.properties\n\n#\u00a0An\u00a0optional\u00a0human\u00a0friendly\u00a0name\u00a0for\u00a0this\u00a0build\u00a0job\u00a0to\u00a0be\u00a0included\u00a0in\u00a0the\u00a0build\u00a0reports.\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.name\u00a0=\u00a0Test\u00a0Build\u00a001\n\n#\u00a0An\u00a0optional\u00a0description\u00a0for\u00a0this\u00a0build\u00a0job\u00a0to\u00a0be\u00a0included\u00a0in\u00a0the\u00a0build\u00a0reports.\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.description\u00a0=\u00a0Checks\u00a0the\u00a0support\u00a0for\u00a0build\u00a0reports.\n\n#\u00a0A\u00a0comma\u00a0separated\u00a0list\u00a0of\u00a0JRE\u00a0versions\u00a0on\u00a0which\u00a0this\u00a0build\u00a0job\u00a0should\u00a0be\u00a0run.\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.java.version\u00a0=\u00a01.4+,\u00a0!1.4.1,\u00a01.7-\n\n#\u00a0A\u00a0comma\u00a0separated\u00a0list\u00a0of\u00a0OS\u00a0families\u00a0on\u00a0which\u00a0this\u00a0build\u00a0job\u00a0should\u00a0be\u00a0run.\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.os.family\u00a0=\u00a0!windows,\u00a0unix,\u00a0mac\n\n#\u00a0A\u00a0comma\u00a0separated\u00a0list\u00a0of\u00a0Maven\u00a0versions\u00a0on\u00a0which\u00a0this\u00a0build\u00a0should\u00a0be\u00a0run.\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.5\ninvoker.maven.version\u00a0=\u00a02.0.10+,\u00a0!2.1.0,\u00a0!2.2.0\n", 3 );
 205  0
                 append( sb, "Expression: ${invoker.invokerPropertiesFile}", 3 );
 206  0
                 append( sb, "", 0 );
 207  
 
 208  0
                 append( sb, "invokerTest", 2 );
 209  0
                 append( sb, "A comma separated list of project names to run. Specify this parameter to run individual tests by file name, overriding the setupIncludes, pomIncludes and pomExcludes parameters. Each pattern you specify here will be used to create an include pattern formatted like ${projectsDirectory}/pattern, so you can just type -Dinvoker.test=FirstTest,SecondTest to run builds in ${projectsDirectory}/FirstTest and ${projectsDirectory}/SecondTest.", 3 );
 210  0
                 append( sb, "Expression: ${invoker.test}", 3 );
 211  0
                 append( sb, "", 0 );
 212  
 
 213  0
                 append( sb, "javaHome", 2 );
 214  0
                 append( sb, "The JAVA_HOME environment variable to use for forked Maven invocations. Defaults to the current Java home directory.", 3 );
 215  0
                 append( sb, "Expression: ${invoker.javaHome}", 3 );
 216  0
                 append( sb, "", 0 );
 217  
 
 218  0
                 append( sb, "localRepositoryPath (Default: ${settings.localRepository})", 2 );
 219  0
                 append( sb, "The local repository for caching artifacts. It is strongly recommended to specify a path to an isolated repository like ${project.build.directory}/it-repo. Otherwise, your ordinary local repository will be used, potentially soiling it with broken artifacts.", 3 );
 220  0
                 append( sb, "Expression: ${invoker.localRepositoryPath}", 3 );
 221  0
                 append( sb, "", 0 );
 222  
 
 223  0
                 append( sb, "mavenHome", 2 );
 224  0
                 append( sb, "The home directory of the Maven installation to use for the forked builds. Defaults to the current Maven installation.", 3 );
 225  0
                 append( sb, "Expression: ${invoker.mavenHome}", 3 );
 226  0
                 append( sb, "", 0 );
 227  
 
 228  0
                 append( sb, "mavenOpts", 2 );
 229  0
                 append( sb, "The MAVEN_OPTS environment variable to use when invoking Maven. This value can be overridden for individual integration tests by using invokerPropertiesFile.", 3 );
 230  0
                 append( sb, "Expression: ${invoker.mavenOpts}", 3 );
 231  0
                 append( sb, "", 0 );
 232  
 
 233  0
                 append( sb, "mergeUserSettings (Default: false)", 2 );
 234  0
                 append( sb, "If enable and if you have a settings file configured for the execution, it will be merged with your user settings.", 3 );
 235  0
                 append( sb, "Expression: ${invoker.mergeUserSettings}", 3 );
 236  0
                 append( sb, "", 0 );
 237  
 
 238  0
                 append( sb, "noLog (Default: false)", 2 );
 239  0
                 append( sb, "Suppress logging to the build.log file.", 3 );
 240  0
                 append( sb, "Expression: ${invoker.noLog}", 3 );
 241  0
                 append( sb, "", 0 );
 242  
 
 243  0
                 append( sb, "parallelThreads (Default: 1)", 2 );
 244  0
                 append( sb, "number of threads for running tests in parallel. This will be the number of maven forked process in parallel.", 3 );
 245  0
                 append( sb, "Expression: ${invoker.parallelThreads}", 3 );
 246  0
                 append( sb, "", 0 );
 247  
 
 248  0
                 append( sb, "pom", 2 );
 249  0
                 append( sb, "A single POM to build, skipping any scanning parameters and behavior.", 3 );
 250  0
                 append( sb, "Expression: ${invoker.pom}", 3 );
 251  0
                 append( sb, "", 0 );
 252  
 
 253  0
                 append( sb, "pomExcludes", 2 );
 254  0
                 append( sb, "Exclude patterns for searching the integration test directory. This parameter is meant to be set from the POM. By default, no POM files are excluded. For the convenience of using an include pattern like *, the custom settings file specified by the parameter settingsFile will always be excluded automatically.", 3 );
 255  0
                 append( sb, "", 0 );
 256  
 
 257  0
                 append( sb, "pomIncludes", 2 );
 258  0
                 append( sb, "Include patterns for searching the integration test directory for projects. This parameter is meant to be set from the POM. If this parameter is not set, the plugin will search for all pom.xml files one directory below projectsDirectory (i.e. */pom.xml).\n\nStarting with version 1.3, mere directories can also be matched by these patterns. For example, the include pattern * will run Maven builds on all immediate sub directories of projectsDirectory, regardless if they contain a pom.xml. This allows to perform builds that need/should not depend on the existence of a POM.", 3 );
 259  0
                 append( sb, "", 0 );
 260  
 
 261  0
                 append( sb, "postBuildHookScript (Default: postbuild)", 2 );
 262  0
                 append( sb, "Relative path of a cleanup/verification hook script to run after executing the build. This script may be written with either BeanShell or Groovy (since 1.3). If the file extension is omitted (e.g. verify), the plugin searches for the file by trying out the well-known extensions .bsh and .groovy. If this script exists for a particular project but returns any non-null value different from true or throws an exception, the corresponding build is flagged as a failure.", 3 );
 263  0
                 append( sb, "Expression: ${invoker.postBuildHookScript}", 3 );
 264  0
                 append( sb, "", 0 );
 265  
 
 266  0
                 append( sb, "preBuildHookScript (Default: prebuild)", 2 );
 267  0
                 append( sb, "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. prebuild), the plugin searches for the file by trying out the well-known extensions .bsh and .groovy. If this script exists for a particular project but returns any non-null value different from true or throws an exception, the corresponding build is flagged as a failure. In this case, neither Maven nor the post-build hook script will be invoked.", 3 );
 268  0
                 append( sb, "Expression: ${invoker.preBuildHookScript}", 3 );
 269  0
                 append( sb, "", 0 );
 270  
 
 271  0
                 append( sb, "profiles", 2 );
 272  0
                 append( sb, "List of profile identifiers to explicitly trigger in the build.", 3 );
 273  0
                 append( sb, "", 0 );
 274  
 
 275  0
                 append( sb, "profilesFile (Default: profiles.txt)", 2 );
 276  0
                 append( sb, "Deprecated. As of version 1.2, the key invoker.profiles from the properties file specified by the parameter invokerPropertiesFile should be used instead.", 3 );
 277  0
                 append( sb, "", 0 );
 278  0
                 append( sb, "The name of the project-specific file that contains the enumeration of profiles to use for that test. If the file exists and is empty no profiles will be used even if the parameter profiles is set.", 3 );
 279  0
                 append( sb, "Expression: ${invoker.profilesFile}", 3 );
 280  0
                 append( sb, "", 0 );
 281  
 
 282  0
                 append( sb, "projectsDirectory (Default: ${basedir}/src/it/)", 2 );
 283  0
                 append( sb, "Directory to search for integration tests.", 3 );
 284  0
                 append( sb, "Expression: ${invoker.projectsDirectory}", 3 );
 285  0
                 append( sb, "", 0 );
 286  
 
 287  0
                 append( sb, "properties", 2 );
 288  0
                 append( sb, "Common set of properties to pass in on each project\'s command line, via -D parameters.", 3 );
 289  0
                 append( sb, "", 0 );
 290  
 
 291  0
                 append( sb, "reportsDirectory (Default: ${project.build.directory}/invoker-reports)", 2 );
 292  0
                 append( sb, "Base directory where all build reports are written to. Every execution of an integration test will produce an XML file which contains the information about success or failure of that particular build job. The format of the resulting XML file is documented in the given build-job reference.", 3 );
 293  0
                 append( sb, "Expression: ${invoker.reportsDirectory}", 3 );
 294  0
                 append( sb, "", 0 );
 295  
 
 296  0
                 append( sb, "selectorScript (Default: selector)", 2 );
 297  0
                 append( sb, "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. selector), the plugin searches for the file by trying out the well-known extensions .bsh and .groovy. If this script exists for a particular project but returns any non-null value different from true, 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.", 3 );
 298  0
                 append( sb, "Expression: ${invoker.selectorScript}", 3 );
 299  0
                 append( sb, "", 0 );
 300  
 
 301  0
                 append( sb, "settingsFile", 2 );
 302  0
                 append( sb, "Path to an alternate settings.xml to use for Maven invocation with all ITs. Note that the <localRepository> element of this settings file is always ignored, i.e. the path given by the parameter localRepositoryPath is dominant.", 3 );
 303  0
                 append( sb, "Expression: ${invoker.settingsFile}", 3 );
 304  0
                 append( sb, "", 0 );
 305  
 
 306  0
                 append( sb, "setupIncludes", 2 );
 307  0
                 append( sb, "Include patterns for searching the projects directory for projects that need to be run before the other projects. This parameter allows to declare projects that perform setup tasks like installing utility artifacts into the local repository. Projects matched by these patterns are implicitly excluded from the scan for ordinary projects. Also, the exclusions defined by the parameter pomExcludes apply to the setup projects, too. Default value is: setup*/pom.xml.", 3 );
 308  0
                 append( sb, "", 0 );
 309  
 
 310  0
                 append( sb, "showErrors (Default: false)", 2 );
 311  0
                 append( sb, "Whether to show errors in the build output.", 3 );
 312  0
                 append( sb, "Expression: ${invoker.showErrors}", 3 );
 313  0
                 append( sb, "", 0 );
 314  
 
 315  0
                 append( sb, "showVersion (Default: false)", 2 );
 316  0
                 append( sb, "flag to enable show mvn version used for running its (cli option : -V,--show-version )", 3 );
 317  0
                 append( sb, "Expression: ${invoker.showVersion}", 3 );
 318  0
                 append( sb, "", 0 );
 319  
 
 320  0
                 append( sb, "skipInvocation (Default: false)", 2 );
 321  0
                 append( sb, "Flag used to suppress certain invocations. This is useful in tailoring the build using profiles.", 3 );
 322  0
                 append( sb, "Expression: ${invoker.skip}", 3 );
 323  0
                 append( sb, "", 0 );
 324  
 
 325  0
                 append( sb, "streamLogs (Default: false)", 2 );
 326  0
                 append( sb, "Flag used to determine whether the build logs should be output to the normal mojo log.", 3 );
 327  0
                 append( sb, "Expression: ${invoker.streamLogs}", 3 );
 328  0
                 append( sb, "", 0 );
 329  
 
 330  0
                 append( sb, "suppressSummaries (Default: false)", 2 );
 331  0
                 append( sb, "Flag used to suppress the summary output notifying of successes and failures. If set to true, the only indication of the build\'s success or failure will be the effect it has on the main build (if it fails, the main build should fail as well). If streamLogs is enabled, the sub-build summary will also provide an indication.", 3 );
 332  0
                 append( sb, "", 0 );
 333  
 
 334  0
                 append( sb, "testProperties", 2 );
 335  0
                 append( sb, "Deprecated. As of version 1.1, use the properties parameter instead.", 3 );
 336  0
                 append( sb, "", 0 );
 337  0
                 append( sb, "Common set of test properties to pass in on each IT\'s command line, via -D parameters.", 3 );
 338  0
                 append( sb, "", 0 );
 339  
 
 340  0
                 append( sb, "testPropertiesFile (Default: test.properties)", 2 );
 341  0
                 append( sb, "Location of a properties file that defines CLI properties for the test.", 3 );
 342  0
                 append( sb, "Expression: ${invoker.testPropertiesFile}", 3 );
 343  0
                 append( sb, "", 0 );
 344  
             }
 345  
         }
 346  
 
 347  0
         if ( goal == null || goal.length() <= 0 || "report".equals( goal ) )
 348  
         {
 349  0
             append( sb, "invoker:report", 0 );
 350  0
             append( sb, "Generate a report based on the results of the Maven invocations. Note: This mojo doesn\'t fork any lifecycle, if you have a clean working copy, you have to use a command like mvn clean integration-test site to ensure the build results are present when this goal is invoked.", 1 );
 351  0
             append( sb, "", 0 );
 352  0
             if ( detail )
 353  
             {
 354  0
                 append( sb, "Available parameters:", 1 );
 355  0
                 append( sb, "", 0 );
 356  
 
 357  0
                 append( sb, "outputDirectory (Default: ${project.reporting.outputDirectory})", 2 );
 358  0
                 append( sb, "The output directory for the report. Note that this parameter is only evaluated if the goal is run directly from the command line. If the goal is run indirectly as part of a site generation, the output directory configured in the Maven Site Plugin is used instead.", 3 );
 359  0
                 append( sb, "Required: Yes", 3 );
 360  0
                 append( sb, "", 0 );
 361  
 
 362  0
                 append( sb, "reportsDirectory (Default: ${project.build.directory}/invoker-reports)", 2 );
 363  0
                 append( sb, "Base directory where all build reports have been written to.", 3 );
 364  0
                 append( sb, "Expression: ${invoker.reportsDirectory}", 3 );
 365  0
                 append( sb, "", 0 );
 366  
             }
 367  
         }
 368  
 
 369  0
         if ( goal == null || goal.length() <= 0 || "run".equals( goal ) )
 370  
         {
 371  0
             append( sb, "invoker:run", 0 );
 372  0
             append( sb, "Searches for integration test Maven projects, and executes each, collecting a log in the project directory, and outputting the results to the command line.", 1 );
 373  0
             append( sb, "", 0 );
 374  0
             if ( detail )
 375  
             {
 376  0
                 append( sb, "Available parameters:", 1 );
 377  0
                 append( sb, "", 0 );
 378  
 
 379  0
                 append( sb, "addTestClassPath (Default: false)", 2 );
 380  0
                 append( sb, "A flag whether the test class path of the project under test should be included in the class path of the pre-/post-build scripts. If set to false, the class path of script interpreter consists only of the runtime dependencies of the Maven Invoker Plugin. If set the true, the project\'s test class path will be prepended to the interpreter class path. Among others, this feature allows the scripts to access utility classes from the test sources of your project.", 3 );
 381  0
                 append( sb, "Expression: ${invoker.addTestClassPath}", 3 );
 382  0
                 append( sb, "", 0 );
 383  
 
 384  0
                 append( sb, "cloneAllFiles (Default: false)", 2 );
 385  0
                 append( sb, "Some files are normally excluded when copying the IT projects from the directory specified by the parameter projectsDirectory to the directory given by cloneProjectsTo (e.g. .svn, CVS, *~, etc). Setting this parameter to true will cause all files to be copied to the cloneProjectsTo directory.", 3 );
 386  0
                 append( sb, "", 0 );
 387  
 
 388  0
                 append( sb, "cloneClean (Default: false)", 2 );
 389  0
                 append( sb, "Ensure the cloneProjectsTo directory is not polluted with files from earlier invoker runs.", 3 );
 390  0
                 append( sb, "", 0 );
 391  
 
 392  0
                 append( sb, "cloneProjectsTo", 2 );
 393  0
                 append( sb, "Directory to which projects should be cloned prior to execution. If not specified, each integration test will be run in the directory in which the corresponding IT POM was found. In this case, you most likely want to configure your SCM to ignore target and build.log in the test\'s base directory.", 3 );
 394  0
                 append( sb, "", 0 );
 395  
 
 396  0
                 append( sb, "debug (Default: false)", 2 );
 397  0
                 append( sb, "Whether to show debug statements in the build output.", 3 );
 398  0
                 append( sb, "Expression: ${invoker.debug}", 3 );
 399  0
                 append( sb, "", 0 );
 400  
 
 401  0
                 append( sb, "disableReports (Default: false)", 2 );
 402  0
                 append( sb, "A flag to disable the generation of build reports.", 3 );
 403  0
                 append( sb, "Expression: ${invoker.disableReports}", 3 );
 404  0
                 append( sb, "", 0 );
 405  
 
 406  0
                 append( sb, "encoding (Default: ${project.build.sourceEncoding})", 2 );
 407  0
                 append( sb, "The file encoding for the pre-/post-build scripts and the list files for goals and profiles.", 3 );
 408  0
                 append( sb, "Expression: ${encoding}", 3 );
 409  0
                 append( sb, "", 0 );
 410  
 
 411  0
                 append( sb, "filterProperties", 2 );
 412  0
                 append( sb, "A list of additional properties which will be used to filter tokens in POMs and goal files.", 3 );
 413  0
                 append( sb, "", 0 );
 414  
 
 415  0
                 append( sb, "goals", 2 );
 416  0
                 append( sb, "The list of goals to execute on each project. Default value is: package.", 3 );
 417  0
                 append( sb, "", 0 );
 418  
 
 419  0
                 append( sb, "goalsFile (Default: goals.txt)", 2 );
 420  0
                 append( sb, "Deprecated. As of version 1.2, the key invoker.goals from the properties file specified by the parameter invokerPropertiesFile should be used instead.", 3 );
 421  0
                 append( sb, "", 0 );
 422  0
                 append( sb, "The name of the project-specific file that contains the enumeration of goals to execute for that test.", 3 );
 423  0
                 append( sb, "Expression: ${invoker.goalsFile}", 3 );
 424  0
                 append( sb, "", 0 );
 425  
 
 426  0
                 append( sb, "ignoreFailures (Default: false)", 2 );
 427  0
                 append( sb, "A flag controlling whether failures of the sub builds should fail the main build, too. If set to true, the main build will proceed even if one or more sub builds failed.", 3 );
 428  0
                 append( sb, "Expression: ${maven.test.failure.ignore}", 3 );
 429  0
                 append( sb, "", 0 );
 430  
 
 431  0
                 append( sb, "interpolationsProperties", 2 );
 432  0
                 append( sb, "Deprecated. As of version 1.3, the parameter filterProperties should be used instead.", 3 );
 433  0
                 append( sb, "", 0 );
 434  0
                 append( sb, "List of properties which will be used to interpolate goal files.", 3 );
 435  0
                 append( sb, "", 0 );
 436  
 
 437  0
                 append( sb, "invokerPropertiesFile (Default: invoker.properties)", 2 );
 438  0
                 append( sb, "The name of an optional project-specific file that contains properties used to specify settings for an individual Maven invocation. Any property present in the file will override the corresponding setting from the plugin configuration. The values of the properties are filtered and may use expressions like ${project.version} to reference project properties or values from the parameter filterProperties. The snippet below describes the supported properties:\n#\u00a0A\u00a0comma\u00a0or\u00a0space\u00a0separated\u00a0list\u00a0of\u00a0goals/phases\u00a0to\u00a0execute,\u00a0may\n#\u00a0specify\u00a0an\u00a0empty\u00a0list\u00a0to\u00a0execute\u00a0the\u00a0default\u00a0goal\u00a0of\u00a0the\u00a0IT\u00a0project\ninvoker.goals\u00a0=\u00a0clean\u00a0install\n\n#\u00a0Optionally,\u00a0a\u00a0list\u00a0of\u00a0goals\u00a0to\u00a0run\u00a0during\u00a0further\u00a0invocations\u00a0of\u00a0Maven\ninvoker.goals.2\u00a0=\u00a0${project.groupId}:${project.artifactId}:${project.version}:run\n\n#\u00a0A\u00a0comma\u00a0or\u00a0space\u00a0separated\u00a0list\u00a0of\u00a0profiles\u00a0to\u00a0activate\ninvoker.profiles\u00a0=\u00a0its,jdk15\n\n#\u00a0The\u00a0path\u00a0to\u00a0an\u00a0alternative\u00a0POM\u00a0or\u00a0base\u00a0directory\u00a0to\u00a0invoke\u00a0Maven\u00a0on,\u00a0defaults\u00a0to\u00a0the\n#\u00a0project\u00a0that\u00a0was\u00a0originally\u00a0specified\u00a0in\u00a0the\u00a0plugin\u00a0configuration\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.project\u00a0=\u00a0sub-module\n\n#\u00a0The\u00a0value\u00a0for\u00a0the\u00a0environment\u00a0variable\u00a0MAVEN_OPTS\ninvoker.mavenOpts\u00a0=\u00a0-Dfile.encoding=UTF-16\u00a0-Xms32m\u00a0-Xmx256m\n\n#\u00a0Possible\u00a0values\u00a0are\u00a0\'fail-fast\'\u00a0(default),\u00a0\'fail-at-end\'\u00a0and\u00a0\'fail-never\'\ninvoker.failureBehavior\u00a0=\u00a0fail-never\n\n#\u00a0The\u00a0expected\u00a0result\u00a0of\u00a0the\u00a0build,\u00a0possible\u00a0values\u00a0are\u00a0\'success\'\u00a0(default)\u00a0and\u00a0\'failure\'\ninvoker.buildResult\u00a0=\u00a0failure\n\n#\u00a0A\u00a0boolean\u00a0value\u00a0controlling\u00a0the\u00a0aggregator\u00a0mode\u00a0of\u00a0Maven,\u00a0defaults\u00a0to\u00a0\'false\'\ninvoker.nonRecursive\u00a0=\u00a0true\n\n#\u00a0A\u00a0boolean\u00a0value\u00a0controlling\u00a0the\u00a0network\u00a0behavior\u00a0of\u00a0Maven,\u00a0defaults\u00a0to\u00a0\'false\'\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.offline\u00a0=\u00a0true\n\n#\u00a0The\u00a0path\u00a0to\u00a0the\u00a0properties\u00a0file\u00a0from\u00a0which\u00a0to\u00a0load\u00a0system\u00a0properties,\u00a0defaults\u00a0to\u00a0the\n#\u00a0filename\u00a0given\u00a0by\u00a0the\u00a0plugin\u00a0parameter\u00a0testPropertiesFile\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.systemPropertiesFile\u00a0=\u00a0test.properties\n\n#\u00a0An\u00a0optional\u00a0human\u00a0friendly\u00a0name\u00a0for\u00a0this\u00a0build\u00a0job\u00a0to\u00a0be\u00a0included\u00a0in\u00a0the\u00a0build\u00a0reports.\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.name\u00a0=\u00a0Test\u00a0Build\u00a001\n\n#\u00a0An\u00a0optional\u00a0description\u00a0for\u00a0this\u00a0build\u00a0job\u00a0to\u00a0be\u00a0included\u00a0in\u00a0the\u00a0build\u00a0reports.\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.description\u00a0=\u00a0Checks\u00a0the\u00a0support\u00a0for\u00a0build\u00a0reports.\n\n#\u00a0A\u00a0comma\u00a0separated\u00a0list\u00a0of\u00a0JRE\u00a0versions\u00a0on\u00a0which\u00a0this\u00a0build\u00a0job\u00a0should\u00a0be\u00a0run.\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.java.version\u00a0=\u00a01.4+,\u00a0!1.4.1,\u00a01.7-\n\n#\u00a0A\u00a0comma\u00a0separated\u00a0list\u00a0of\u00a0OS\u00a0families\u00a0on\u00a0which\u00a0this\u00a0build\u00a0job\u00a0should\u00a0be\u00a0run.\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.4\ninvoker.os.family\u00a0=\u00a0!windows,\u00a0unix,\u00a0mac\n\n#\u00a0A\u00a0comma\u00a0separated\u00a0list\u00a0of\u00a0Maven\u00a0versions\u00a0on\u00a0which\u00a0this\u00a0build\u00a0should\u00a0be\u00a0run.\n#\u00a0Since\u00a0plugin\u00a0version\u00a01.5\ninvoker.maven.version\u00a0=\u00a02.0.10+,\u00a0!2.1.0,\u00a0!2.2.0\n", 3 );
 439  0
                 append( sb, "Expression: ${invoker.invokerPropertiesFile}", 3 );
 440  0
                 append( sb, "", 0 );
 441  
 
 442  0
                 append( sb, "invokerTest", 2 );
 443  0
                 append( sb, "A comma separated list of project names to run. Specify this parameter to run individual tests by file name, overriding the setupIncludes, pomIncludes and pomExcludes parameters. Each pattern you specify here will be used to create an include pattern formatted like ${projectsDirectory}/pattern, so you can just type -Dinvoker.test=FirstTest,SecondTest to run builds in ${projectsDirectory}/FirstTest and ${projectsDirectory}/SecondTest.", 3 );
 444  0
                 append( sb, "Expression: ${invoker.test}", 3 );
 445  0
                 append( sb, "", 0 );
 446  
 
 447  0
                 append( sb, "javaHome", 2 );
 448  0
                 append( sb, "The JAVA_HOME environment variable to use for forked Maven invocations. Defaults to the current Java home directory.", 3 );
 449  0
                 append( sb, "Expression: ${invoker.javaHome}", 3 );
 450  0
                 append( sb, "", 0 );
 451  
 
 452  0
                 append( sb, "localRepositoryPath (Default: ${settings.localRepository})", 2 );
 453  0
                 append( sb, "The local repository for caching artifacts. It is strongly recommended to specify a path to an isolated repository like ${project.build.directory}/it-repo. Otherwise, your ordinary local repository will be used, potentially soiling it with broken artifacts.", 3 );
 454  0
                 append( sb, "Expression: ${invoker.localRepositoryPath}", 3 );
 455  0
                 append( sb, "", 0 );
 456  
 
 457  0
                 append( sb, "mavenHome", 2 );
 458  0
                 append( sb, "The home directory of the Maven installation to use for the forked builds. Defaults to the current Maven installation.", 3 );
 459  0
                 append( sb, "Expression: ${invoker.mavenHome}", 3 );
 460  0
                 append( sb, "", 0 );
 461  
 
 462  0
                 append( sb, "mavenOpts", 2 );
 463  0
                 append( sb, "The MAVEN_OPTS environment variable to use when invoking Maven. This value can be overridden for individual integration tests by using invokerPropertiesFile.", 3 );
 464  0
                 append( sb, "Expression: ${invoker.mavenOpts}", 3 );
 465  0
                 append( sb, "", 0 );
 466  
 
 467  0
                 append( sb, "mergeUserSettings (Default: false)", 2 );
 468  0
                 append( sb, "If enable and if you have a settings file configured for the execution, it will be merged with your user settings.", 3 );
 469  0
                 append( sb, "Expression: ${invoker.mergeUserSettings}", 3 );
 470  0
                 append( sb, "", 0 );
 471  
 
 472  0
                 append( sb, "noLog (Default: false)", 2 );
 473  0
                 append( sb, "Suppress logging to the build.log file.", 3 );
 474  0
                 append( sb, "Expression: ${invoker.noLog}", 3 );
 475  0
                 append( sb, "", 0 );
 476  
 
 477  0
                 append( sb, "parallelThreads (Default: 1)", 2 );
 478  0
                 append( sb, "number of threads for running tests in parallel. This will be the number of maven forked process in parallel.", 3 );
 479  0
                 append( sb, "Expression: ${invoker.parallelThreads}", 3 );
 480  0
                 append( sb, "", 0 );
 481  
 
 482  0
                 append( sb, "pom", 2 );
 483  0
                 append( sb, "A single POM to build, skipping any scanning parameters and behavior.", 3 );
 484  0
                 append( sb, "Expression: ${invoker.pom}", 3 );
 485  0
                 append( sb, "", 0 );
 486  
 
 487  0
                 append( sb, "pomExcludes", 2 );
 488  0
                 append( sb, "Exclude patterns for searching the integration test directory. This parameter is meant to be set from the POM. By default, no POM files are excluded. For the convenience of using an include pattern like *, the custom settings file specified by the parameter settingsFile will always be excluded automatically.", 3 );
 489  0
                 append( sb, "", 0 );
 490  
 
 491  0
                 append( sb, "pomIncludes", 2 );
 492  0
                 append( sb, "Include patterns for searching the integration test directory for projects. This parameter is meant to be set from the POM. If this parameter is not set, the plugin will search for all pom.xml files one directory below projectsDirectory (i.e. */pom.xml).\n\nStarting with version 1.3, mere directories can also be matched by these patterns. For example, the include pattern * will run Maven builds on all immediate sub directories of projectsDirectory, regardless if they contain a pom.xml. This allows to perform builds that need/should not depend on the existence of a POM.", 3 );
 493  0
                 append( sb, "", 0 );
 494  
 
 495  0
                 append( sb, "postBuildHookScript (Default: postbuild)", 2 );
 496  0
                 append( sb, "Relative path of a cleanup/verification hook script to run after executing the build. This script may be written with either BeanShell or Groovy (since 1.3). If the file extension is omitted (e.g. verify), the plugin searches for the file by trying out the well-known extensions .bsh and .groovy. If this script exists for a particular project but returns any non-null value different from true or throws an exception, the corresponding build is flagged as a failure.", 3 );
 497  0
                 append( sb, "Expression: ${invoker.postBuildHookScript}", 3 );
 498  0
                 append( sb, "", 0 );
 499  
 
 500  0
                 append( sb, "preBuildHookScript (Default: prebuild)", 2 );
 501  0
                 append( sb, "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. prebuild), the plugin searches for the file by trying out the well-known extensions .bsh and .groovy. If this script exists for a particular project but returns any non-null value different from true or throws an exception, the corresponding build is flagged as a failure. In this case, neither Maven nor the post-build hook script will be invoked.", 3 );
 502  0
                 append( sb, "Expression: ${invoker.preBuildHookScript}", 3 );
 503  0
                 append( sb, "", 0 );
 504  
 
 505  0
                 append( sb, "profiles", 2 );
 506  0
                 append( sb, "List of profile identifiers to explicitly trigger in the build.", 3 );
 507  0
                 append( sb, "", 0 );
 508  
 
 509  0
                 append( sb, "profilesFile (Default: profiles.txt)", 2 );
 510  0
                 append( sb, "Deprecated. As of version 1.2, the key invoker.profiles from the properties file specified by the parameter invokerPropertiesFile should be used instead.", 3 );
 511  0
                 append( sb, "", 0 );
 512  0
                 append( sb, "The name of the project-specific file that contains the enumeration of profiles to use for that test. If the file exists and is empty no profiles will be used even if the parameter profiles is set.", 3 );
 513  0
                 append( sb, "Expression: ${invoker.profilesFile}", 3 );
 514  0
                 append( sb, "", 0 );
 515  
 
 516  0
                 append( sb, "projectsDirectory (Default: ${basedir}/src/it/)", 2 );
 517  0
                 append( sb, "Directory to search for integration tests.", 3 );
 518  0
                 append( sb, "Expression: ${invoker.projectsDirectory}", 3 );
 519  0
                 append( sb, "", 0 );
 520  
 
 521  0
                 append( sb, "properties", 2 );
 522  0
                 append( sb, "Common set of properties to pass in on each project\'s command line, via -D parameters.", 3 );
 523  0
                 append( sb, "", 0 );
 524  
 
 525  0
                 append( sb, "reportsDirectory (Default: ${project.build.directory}/invoker-reports)", 2 );
 526  0
                 append( sb, "Base directory where all build reports are written to. Every execution of an integration test will produce an XML file which contains the information about success or failure of that particular build job. The format of the resulting XML file is documented in the given build-job reference.", 3 );
 527  0
                 append( sb, "Expression: ${invoker.reportsDirectory}", 3 );
 528  0
                 append( sb, "", 0 );
 529  
 
 530  0
                 append( sb, "selectorScript (Default: selector)", 2 );
 531  0
                 append( sb, "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. selector), the plugin searches for the file by trying out the well-known extensions .bsh and .groovy. If this script exists for a particular project but returns any non-null value different from true, 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.", 3 );
 532  0
                 append( sb, "Expression: ${invoker.selectorScript}", 3 );
 533  0
                 append( sb, "", 0 );
 534  
 
 535  0
                 append( sb, "settingsFile", 2 );
 536  0
                 append( sb, "Path to an alternate settings.xml to use for Maven invocation with all ITs. Note that the <localRepository> element of this settings file is always ignored, i.e. the path given by the parameter localRepositoryPath is dominant.", 3 );
 537  0
                 append( sb, "Expression: ${invoker.settingsFile}", 3 );
 538  0
                 append( sb, "", 0 );
 539  
 
 540  0
                 append( sb, "setupIncludes", 2 );
 541  0
                 append( sb, "Include patterns for searching the projects directory for projects that need to be run before the other projects. This parameter allows to declare projects that perform setup tasks like installing utility artifacts into the local repository. Projects matched by these patterns are implicitly excluded from the scan for ordinary projects. Also, the exclusions defined by the parameter pomExcludes apply to the setup projects, too. Default value is: setup*/pom.xml.", 3 );
 542  0
                 append( sb, "", 0 );
 543  
 
 544  0
                 append( sb, "showErrors (Default: false)", 2 );
 545  0
                 append( sb, "Whether to show errors in the build output.", 3 );
 546  0
                 append( sb, "Expression: ${invoker.showErrors}", 3 );
 547  0
                 append( sb, "", 0 );
 548  
 
 549  0
                 append( sb, "showVersion (Default: false)", 2 );
 550  0
                 append( sb, "flag to enable show mvn version used for running its (cli option : -V,--show-version )", 3 );
 551  0
                 append( sb, "Expression: ${invoker.showVersion}", 3 );
 552  0
                 append( sb, "", 0 );
 553  
 
 554  0
                 append( sb, "skipInvocation (Default: false)", 2 );
 555  0
                 append( sb, "Flag used to suppress certain invocations. This is useful in tailoring the build using profiles.", 3 );
 556  0
                 append( sb, "Expression: ${invoker.skip}", 3 );
 557  0
                 append( sb, "", 0 );
 558  
 
 559  0
                 append( sb, "streamLogs (Default: false)", 2 );
 560  0
                 append( sb, "Flag used to determine whether the build logs should be output to the normal mojo log.", 3 );
 561  0
                 append( sb, "Expression: ${invoker.streamLogs}", 3 );
 562  0
                 append( sb, "", 0 );
 563  
 
 564  0
                 append( sb, "suppressSummaries (Default: false)", 2 );
 565  0
                 append( sb, "Flag used to suppress the summary output notifying of successes and failures. If set to true, the only indication of the build\'s success or failure will be the effect it has on the main build (if it fails, the main build should fail as well). If streamLogs is enabled, the sub-build summary will also provide an indication.", 3 );
 566  0
                 append( sb, "", 0 );
 567  
 
 568  0
                 append( sb, "testProperties", 2 );
 569  0
                 append( sb, "Deprecated. As of version 1.1, use the properties parameter instead.", 3 );
 570  0
                 append( sb, "", 0 );
 571  0
                 append( sb, "Common set of test properties to pass in on each IT\'s command line, via -D parameters.", 3 );
 572  0
                 append( sb, "", 0 );
 573  
 
 574  0
                 append( sb, "testPropertiesFile (Default: test.properties)", 2 );
 575  0
                 append( sb, "Location of a properties file that defines CLI properties for the test.", 3 );
 576  0
                 append( sb, "Expression: ${invoker.testPropertiesFile}", 3 );
 577  0
                 append( sb, "", 0 );
 578  
             }
 579  
         }
 580  
 
 581  0
         if ( goal == null || goal.length() <= 0 || "verify".equals( goal ) )
 582  
         {
 583  0
             append( sb, "invoker:verify", 0 );
 584  0
             append( sb, "Checks the results of maven-invoker-plugin based integration tests and fails the build if any tests failed.", 1 );
 585  0
             append( sb, "", 0 );
 586  0
             if ( detail )
 587  
             {
 588  0
                 append( sb, "Available parameters:", 1 );
 589  0
                 append( sb, "", 0 );
 590  
 
 591  0
                 append( sb, "ignoreFailures (Default: false)", 2 );
 592  0
                 append( sb, "A flag controlling whether failures of the sub builds should fail the main build, too. If set to true, the main build will proceed even if one or more sub builds failed.", 3 );
 593  0
                 append( sb, "Expression: ${maven.test.failure.ignore}", 3 );
 594  0
                 append( sb, "", 0 );
 595  
 
 596  0
                 append( sb, "reportsDirectory (Default: ${project.build.directory}/invoker-reports)", 2 );
 597  0
                 append( sb, "Base directory where all build reports are read from.", 3 );
 598  0
                 append( sb, "Expression: ${invoker.reportsDirectory}", 3 );
 599  0
                 append( sb, "", 0 );
 600  
 
 601  0
                 append( sb, "skipInvocation (Default: false)", 2 );
 602  0
                 append( sb, "Flag used to suppress certain invocations. This is useful in tailoring the build using profiles.", 3 );
 603  0
                 append( sb, "Expression: ${invoker.skip}", 3 );
 604  0
                 append( sb, "", 0 );
 605  
 
 606  0
                 append( sb, "suppressSummaries (Default: false)", 2 );
 607  0
                 append( sb, "Flag used to suppress the summary output notifying of successes and failures. If set to true, the only indication of the build\'s success or failure will be the effect it has on the main build (if it fails, the main build should fail as well).", 3 );
 608  0
                 append( sb, "", 0 );
 609  
             }
 610  
         }
 611  
 
 612  0
         if ( getLog().isInfoEnabled() )
 613  
         {
 614  0
             getLog().info( sb.toString() );
 615  
         }
 616  0
     }
 617  
 
 618  
     /**
 619  
      * <p>Repeat a String <code>n</code> times to form a new string.</p>
 620  
      *
 621  
      * @param str String to repeat
 622  
      * @param repeat number of times to repeat str
 623  
      * @return String with repeated String
 624  
      * @throws NegativeArraySizeException if <code>repeat < 0</code>
 625  
      * @throws NullPointerException if str is <code>null</code>
 626  
      */
 627  
     private static String repeat( String str, int repeat )
 628  
     {
 629  0
         StringBuffer buffer = new StringBuffer( repeat * str.length() );
 630  
 
 631  0
         for ( int i = 0; i < repeat; i++ )
 632  
         {
 633  0
             buffer.append( str );
 634  
         }
 635  
 
 636  0
         return buffer.toString();
 637  
     }
 638  
 
 639  
     /** 
 640  
      * Append a description to the buffer by respecting the indentSize and lineLength parameters.
 641  
      * <b>Note</b>: The last character is always a new line.
 642  
      * 
 643  
      * @param sb The buffer to append the description, not <code>null</code>.
 644  
      * @param description The description, not <code>null</code>.
 645  
      * @param indent The base indentation level of each line, must not be negative.
 646  
      */
 647  
     private void append( StringBuffer sb, String description, int indent )
 648  
     {
 649  0
         for ( Iterator it = toLines( description, indent, indentSize, lineLength ).iterator(); it.hasNext(); )
 650  
         {
 651  0
             sb.append( it.next().toString() ).append( '\n' );
 652  
         }
 653  0
     }
 654  
 
 655  
     /** 
 656  
      * Splits the specified text into lines of convenient display length.
 657  
      * 
 658  
      * @param text The text to split into lines, must not be <code>null</code>.
 659  
      * @param indent The base indentation level of each line, must not be negative.
 660  
      * @param indentSize The size of each indentation, must not be negative.
 661  
      * @param lineLength The length of the line, must not be negative.
 662  
      * @return The sequence of display lines, never <code>null</code>.
 663  
      * @throws NegativeArraySizeException if <code>indent < 0</code>
 664  
      */
 665  
     private static List toLines( String text, int indent, int indentSize, int lineLength )
 666  
     {
 667  0
         List<String> lines = new ArrayList<String>();
 668  
 
 669  0
         String ind = repeat( "\t", indent );
 670  0
         String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
 671  0
         for ( int i = 0; i < plainLines.length; i++ )
 672  
         {
 673  0
             toLines( lines, ind + plainLines[i], indentSize, lineLength );
 674  
         }
 675  
 
 676  0
         return lines;
 677  
     }
 678  
 
 679  
     /** 
 680  
      * Adds the specified line to the output sequence, performing line wrapping if necessary.
 681  
      * 
 682  
      * @param lines The sequence of display lines, must not be <code>null</code>.
 683  
      * @param line The line to add, must not be <code>null</code>.
 684  
      * @param indentSize The size of each indentation, must not be negative.
 685  
      * @param lineLength The length of the line, must not be negative.
 686  
      */
 687  
     private static void toLines( List<String> lines, String line, int indentSize, int lineLength )
 688  
     {
 689  0
         int lineIndent = getIndentLevel( line );
 690  0
         StringBuffer buf = new StringBuffer( 256 );
 691  0
         String[] tokens = line.split( " +" );
 692  0
         for ( int i = 0; i < tokens.length; i++ )
 693  
         {
 694  0
             String token = tokens[i];
 695  0
             if ( i > 0 )
 696  
             {
 697  0
                 if ( buf.length() + token.length() >= lineLength )
 698  
                 {
 699  0
                     lines.add( buf.toString() );
 700  0
                     buf.setLength( 0 );
 701  0
                     buf.append( repeat( " ", lineIndent * indentSize ) );
 702  
                 }
 703  
                 else
 704  
                 {
 705  0
                     buf.append( ' ' );
 706  
                 }
 707  
             }
 708  0
             for ( int j = 0; j < token.length(); j++ )
 709  
             {
 710  0
                 char c = token.charAt( j );
 711  0
                 if ( c == '\t' )
 712  
                 {
 713  0
                     buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
 714  
                 }
 715  0
                 else if ( c == '\u00A0' )
 716  
                 {
 717  0
                     buf.append( ' ' );
 718  
                 }
 719  
                 else
 720  
                 {
 721  0
                     buf.append( c );
 722  
                 }
 723  
             }
 724  
         }
 725  0
         lines.add( buf.toString() );
 726  0
     }
 727  
 
 728  
     /** 
 729  
      * Gets the indentation level of the specified line.
 730  
      * 
 731  
      * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
 732  
      * @return The indentation level of the line.
 733  
      */
 734  
     private static int getIndentLevel( String line )
 735  
     {
 736  0
         int level = 0;
 737  0
         for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
 738  
         {
 739  0
             level++;
 740  
         }
 741  0
         for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
 742  
         {
 743  0
             if ( line.charAt( i ) == '\t' )
 744  
             {
 745  0
                 level++;
 746  0
                 break;
 747  
             }
 748  
         }
 749  0
         return level;
 750  
     }
 751  
 }