invoker:run

Full name:

org.apache.maven.plugins:maven-invoker-plugin:1.6:run

Description:

Searches for integration test Maven projects, and executes each, collecting a log in the project directory, and outputting the results to the command line.

Attributes:

  • Requires a Maven project to be executed.
  • Requires dependency resolution of artifacts in scope: test.
  • The goal is thread-safe and supports parallel builds.
  • Since version: 1.0.
  • Binds by default to the lifecycle phase: integration-test.

Optional Parameters

Name Type Since Description
addTestClassPath boolean 1.2 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.
Default value is: false.
cloneAllFiles boolean 1.2 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.
Default value is: false.
cloneClean boolean 1.6 Ensure the cloneProjectsTo directory is not polluted with files from earlier invoker runs.
Default value is: false.
cloneProjectsTo File 1.1 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.
debug boolean 1.0 Whether to show debug statements in the build output.
Default value is: false.
disableReports boolean 1.4 A flag to disable the generation of build reports.
Default value is: false.
encoding String 1.2 The file encoding for the pre-/post-build scripts and the list files for goals and profiles.
Default value is: ${project.build.sourceEncoding}.
filterProperties Map 1.3 A list of additional properties which will be used to filter tokens in POMs and goal files.
goals List 1.0 The list of goals to execute on each project. Default value is: package.
goalsFile String 1.0 Deprecated. As of version 1.2, the key invoker.goals from the properties file specified by the parameter invokerPropertiesFile should be used instead.
Default value is: goals.txt.
ignoreFailures boolean 1.3 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.
Default value is: false.
interpolationsProperties Properties 1.1 Deprecated. As of version 1.3, the parameter filterProperties should be used instead.
invokerPropertiesFile String 1.2 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:
# 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
invoker.goals = clean install

# Optionally, a list of goals to run during further invocations of Maven
invoker.goals.2 = ${project.groupId}:${project.artifactId}:${project.version}:run

# A comma or space separated list of profiles to activate
invoker.profiles = its,jdk15

# The path to an alternative POM or base directory to invoke Maven on, defaults to the
# project that was originally specified in the plugin configuration
# Since plugin version 1.4
invoker.project = sub-module

# The value for the environment variable MAVEN_OPTS
invoker.mavenOpts = -Dfile.encoding=UTF-16 -Xms32m -Xmx256m

# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
invoker.failureBehavior = fail-never

# The expected result of the build, possible values are "success" (default) and "failure"
invoker.buildResult = failure

# A boolean value controlling the aggregator mode of Maven, defaults to "false"
invoker.nonRecursive = true

# A boolean value controlling the network behavior of Maven, defaults to "false"
# Since plugin version 1.4
invoker.offline = true

# The path to the properties file from which to load system properties, defaults to the
# filename given by the plugin parameter testPropertiesFile
# Since plugin version 1.4
invoker.systemPropertiesFile = test.properties

# An optional human friendly name for this build job to be included in the build reports.
# Since plugin version 1.4
invoker.name = Test Build 01

# An optional description for this build job to be included in the build reports.
# Since plugin version 1.4
invoker.description = Checks the support for build reports.

# A comma separated list of JRE versions on which this build job should be run.
# Since plugin version 1.4
invoker.java.version = 1.4+, !1.4.1, 1.7-

# 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

# A comma separated list of Maven versions on which this build should be run.
# Since plugin version 1.5
invoker.maven.version = 2.0.10+, !2.1.0, !2.2.0

Default value is: invoker.properties.
invokerTest String 1.1 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.
javaHome File 1.3 The JAVA_HOME environment variable to use for forked Maven invocations. Defaults to the current Java home directory.
localRepositoryPath File 1.0 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.
Default value is: ${settings.localRepository}.
mavenHome File 1.3 The home directory of the Maven installation to use for the forked builds. Defaults to the current Maven installation.
mavenOpts String 1.2 The MAVEN_OPTS environment variable to use when invoking Maven. This value can be overridden for individual integration tests by using invokerPropertiesFile.
mergeUserSettings boolean 1.6 If enable and if you have a settings file configured for the execution, it will be merged with your user settings.
Default value is: false.
noLog boolean 1.0 Suppress logging to the build.log file.
Default value is: false.
parallelThreads int 1.6 number of threads for running tests in parallel. This will be the number of maven forked process in parallel.
Default value is: 1.
pom File 1.0 A single POM to build, skipping any scanning parameters and behavior.
pomExcludes List 1.0 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.
pomIncludes List 1.0 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).

Starting 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.
postBuildHookScript String 1.0 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.
Default value is: postbuild.
preBuildHookScript String 1.0 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.
Default value is: prebuild.
profiles List 1.1 List of profile identifiers to explicitly trigger in the build.
profilesFile String 1.1 Deprecated. As of version 1.2, the key invoker.profiles from the properties file specified by the parameter invokerPropertiesFile should be used instead.
Default value is: profiles.txt.
projectsDirectory File 1.0 Directory to search for integration tests.
Default value is: ${basedir}/src/it/.
properties Map 1.1 Common set of properties to pass in on each project's command line, via -D parameters.
reportsDirectory File 1.4 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.
Default value is: ${project.build.directory}/invoker-reports.
selectorScript String 1.5 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.
Default value is: selector.
settingsFile File 1.2 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.
setupIncludes List 1.3 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.
showErrors boolean 1.0 Whether to show errors in the build output.
Default value is: false.
showVersion boolean 1.4 flag to enable show mvn version used for running its (cli option : -V,--show-version )
Default value is: false.
skipInvocation boolean 1.1 Flag used to suppress certain invocations. This is useful in tailoring the build using profiles.
Default value is: false.
streamLogs boolean 1.0 Flag used to determine whether the build logs should be output to the normal mojo log.
Default value is: false.
suppressSummaries boolean 1.0 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.
Default value is: false.
testProperties Properties 1.0 Deprecated. As of version 1.1, use the properties parameter instead.
testPropertiesFile String 1.0 Location of a properties file that defines CLI properties for the test.
Default value is: test.properties.

Parameter Details

addTestClassPath:

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.
  • Type: boolean
  • Since: 1.2
  • Required: No
  • Expression: ${invoker.addTestClassPath}
  • Default: false

cloneAllFiles:

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.
  • Type: boolean
  • Since: 1.2
  • Required: No
  • Default: false

cloneClean:

Ensure the cloneProjectsTo directory is not polluted with files from earlier invoker runs.
  • Type: boolean
  • Since: 1.6
  • Required: No
  • Default: false

cloneProjectsTo:

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.
  • Type: java.io.File
  • Since: 1.1
  • Required: No

debug:

Whether to show debug statements in the build output.
  • Type: boolean
  • Since: 1.0
  • Required: No
  • Expression: ${invoker.debug}
  • Default: false

disableReports:

A flag to disable the generation of build reports.
  • Type: boolean
  • Since: 1.4
  • Required: No
  • Expression: ${invoker.disableReports}
  • Default: false

encoding:

The file encoding for the pre-/post-build scripts and the list files for goals and profiles.
  • Type: java.lang.String
  • Since: 1.2
  • Required: No
  • Expression: ${encoding}
  • Default: ${project.build.sourceEncoding}

filterProperties:

A list of additional properties which will be used to filter tokens in POMs and goal files.
  • Type: java.util.Map
  • Since: 1.3
  • Required: No

goals:

The list of goals to execute on each project. Default value is: package.
  • Type: java.util.List
  • Since: 1.0
  • Required: No

goalsFile:

Deprecated. As of version 1.2, the key invoker.goals from the properties file specified by the parameter invokerPropertiesFile should be used instead.
The name of the project-specific file that contains the enumeration of goals to execute for that test.
  • Type: java.lang.String
  • Since: 1.0
  • Required: No
  • Expression: ${invoker.goalsFile}
  • Default: goals.txt

ignoreFailures:

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.
  • Type: boolean
  • Since: 1.3
  • Required: No
  • Expression: ${maven.test.failure.ignore}
  • Default: false

interpolationsProperties:

Deprecated. As of version 1.3, the parameter filterProperties should be used instead.
List of properties which will be used to interpolate goal files.
  • Type: java.util.Properties
  • Since: 1.1
  • Required: No

invokerPropertiesFile:

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:
# 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
invoker.goals = clean install

# Optionally, a list of goals to run during further invocations of Maven
invoker.goals.2 = ${project.groupId}:${project.artifactId}:${project.version}:run

# A comma or space separated list of profiles to activate
invoker.profiles = its,jdk15

# The path to an alternative POM or base directory to invoke Maven on, defaults to the
# project that was originally specified in the plugin configuration
# Since plugin version 1.4
invoker.project = sub-module

# The value for the environment variable MAVEN_OPTS
invoker.mavenOpts = -Dfile.encoding=UTF-16 -Xms32m -Xmx256m

# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
invoker.failureBehavior = fail-never

# The expected result of the build, possible values are "success" (default) and "failure"
invoker.buildResult = failure

# A boolean value controlling the aggregator mode of Maven, defaults to "false"
invoker.nonRecursive = true

# A boolean value controlling the network behavior of Maven, defaults to "false"
# Since plugin version 1.4
invoker.offline = true

# The path to the properties file from which to load system properties, defaults to the
# filename given by the plugin parameter testPropertiesFile
# Since plugin version 1.4
invoker.systemPropertiesFile = test.properties

# An optional human friendly name for this build job to be included in the build reports.
# Since plugin version 1.4
invoker.name = Test Build 01

# An optional description for this build job to be included in the build reports.
# Since plugin version 1.4
invoker.description = Checks the support for build reports.

# A comma separated list of JRE versions on which this build job should be run.
# Since plugin version 1.4
invoker.java.version = 1.4+, !1.4.1, 1.7-

# 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

# A comma separated list of Maven versions on which this build should be run.
# Since plugin version 1.5
invoker.maven.version = 2.0.10+, !2.1.0, !2.2.0
  • Type: java.lang.String
  • Since: 1.2
  • Required: No
  • Expression: ${invoker.invokerPropertiesFile}
  • Default: invoker.properties

invokerTest:

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.
  • Type: java.lang.String
  • Since: 1.1
  • Required: No
  • Expression: ${invoker.test}

javaHome:

The JAVA_HOME environment variable to use for forked Maven invocations. Defaults to the current Java home directory.
  • Type: java.io.File
  • Since: 1.3
  • Required: No
  • Expression: ${invoker.javaHome}

localRepositoryPath:

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.
  • Type: java.io.File
  • Since: 1.0
  • Required: No
  • Expression: ${invoker.localRepositoryPath}
  • Default: ${settings.localRepository}

mavenHome:

The home directory of the Maven installation to use for the forked builds. Defaults to the current Maven installation.
  • Type: java.io.File
  • Since: 1.3
  • Required: No
  • Expression: ${invoker.mavenHome}

mavenOpts:

The MAVEN_OPTS environment variable to use when invoking Maven. This value can be overridden for individual integration tests by using invokerPropertiesFile.
  • Type: java.lang.String
  • Since: 1.2
  • Required: No
  • Expression: ${invoker.mavenOpts}

mergeUserSettings:

If enable and if you have a settings file configured for the execution, it will be merged with your user settings.
  • Type: boolean
  • Since: 1.6
  • Required: No
  • Expression: ${invoker.mergeUserSettings}
  • Default: false

noLog:

Suppress logging to the build.log file.
  • Type: boolean
  • Since: 1.0
  • Required: No
  • Expression: ${invoker.noLog}
  • Default: false

parallelThreads:

number of threads for running tests in parallel. This will be the number of maven forked process in parallel.
  • Type: int
  • Since: 1.6
  • Required: No
  • Expression: ${invoker.parallelThreads}
  • Default: 1

pom:

A single POM to build, skipping any scanning parameters and behavior.
  • Type: java.io.File
  • Since: 1.0
  • Required: No
  • Expression: ${invoker.pom}

pomExcludes:

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.
  • Type: java.util.List
  • Since: 1.0
  • Required: No

pomIncludes:

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).

Starting 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.
  • Type: java.util.List
  • Since: 1.0
  • Required: No

postBuildHookScript:

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.
  • Type: java.lang.String
  • Since: 1.0
  • Required: No
  • Expression: ${invoker.postBuildHookScript}
  • Default: postbuild

preBuildHookScript:

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.
  • Type: java.lang.String
  • Since: 1.0
  • Required: No
  • Expression: ${invoker.preBuildHookScript}
  • Default: prebuild

profiles:

List of profile identifiers to explicitly trigger in the build.
  • Type: java.util.List
  • Since: 1.1
  • Required: No

profilesFile:

Deprecated. As of version 1.2, the key invoker.profiles from the properties file specified by the parameter invokerPropertiesFile should be used instead.
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.
  • Type: java.lang.String
  • Since: 1.1
  • Required: No
  • Expression: ${invoker.profilesFile}
  • Default: profiles.txt

projectsDirectory:

Directory to search for integration tests.
  • Type: java.io.File
  • Since: 1.0
  • Required: No
  • Expression: ${invoker.projectsDirectory}
  • Default: ${basedir}/src/it/

properties:

Common set of properties to pass in on each project's command line, via -D parameters.
  • Type: java.util.Map
  • Since: 1.1
  • Required: No

reportsDirectory:

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.
  • Type: java.io.File
  • Since: 1.4
  • Required: No
  • Expression: ${invoker.reportsDirectory}
  • Default: ${project.build.directory}/invoker-reports

selectorScript:

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.
  • Type: java.lang.String
  • Since: 1.5
  • Required: No
  • Expression: ${invoker.selectorScript}
  • Default: selector

settingsFile:

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.
  • Type: java.io.File
  • Since: 1.2
  • Required: No
  • Expression: ${invoker.settingsFile}

setupIncludes:

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.
  • Type: java.util.List
  • Since: 1.3
  • Required: No

showErrors:

Whether to show errors in the build output.
  • Type: boolean
  • Since: 1.0
  • Required: No
  • Expression: ${invoker.showErrors}
  • Default: false

showVersion:

flag to enable show mvn version used for running its (cli option : -V,--show-version )
  • Type: boolean
  • Since: 1.4
  • Required: No
  • Expression: ${invoker.showVersion}
  • Default: false

skipInvocation:

Flag used to suppress certain invocations. This is useful in tailoring the build using profiles.
  • Type: boolean
  • Since: 1.1
  • Required: No
  • Expression: ${invoker.skip}
  • Default: false

streamLogs:

Flag used to determine whether the build logs should be output to the normal mojo log.
  • Type: boolean
  • Since: 1.0
  • Required: No
  • Expression: ${invoker.streamLogs}
  • Default: false

suppressSummaries:

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.
  • Type: boolean
  • Since: 1.0
  • Required: No
  • Default: false

testProperties:

Deprecated. As of version 1.1, use the properties parameter instead.
Common set of test properties to pass in on each IT's command line, via -D parameters.
  • Type: java.util.Properties
  • Since: 1.0
  • Required: No

testPropertiesFile:

Location of a properties file that defines CLI properties for the test.
  • Type: java.lang.String
  • Since: 1.0
  • Required: No
  • Expression: ${invoker.testPropertiesFile}
  • Default: test.properties