The latest version of the Maven Invoker Plugin has just been released on it deservers some extra attention.
The 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.
This plugin is in particular handy to perform integration tests for other Maven plugins. The Invoker Plugin can be employed to run a set of test projects that have been designed to assert certain features of the plugin under test.
Set debug logging on project-level
With the previous versions of the invoker plugin it was possible to change the logging level to debug, but that would apply on every invoked project. Now you activate debug logging per project by adding the following line to your
Debug invoked projects
Up until now the
mvn executable was always called when invoking a project. This made it very hard to debug the invoked projects. Now it is possible to change the name of the executable, so you can use
mvnDebug to debug.
Either add your preferred Maven command to the arguments like
-Dinvoker.mavenExecutable=mvnDebug or add it to the configuration of the maven-invoker-plugin:
<configuration> <mavenExecutable>mvnDebug</mavenExecutable> </configuration>
Selectors for Maven and JRE work for forked instances as well
For both Maven and Java you can specify if a project should be invoked based on their versions.
invoker.properties could look like this:
# A comma separated list of JRE versions on which this build job should be run.
invoker.java.version = 1.4+, !1.4.1, 1.7-
# A comma separated list of Maven versions on which this build should be run.
invoker.maven.version = 2.0.10+, !2.1.0, !2.2.0
These values were always calculated based on the running Maven and Java versions, and not on the forked versions (i.e. when you specify a different
javaHome for the invoker plugin).
But now the plugin can also handle these forks, so projects will only be invoked if their target Maven version and Java version match.
This feature required the change of the Maven prerequisite, so you will need at least Maven 2.2.1 to run the invoker plugin. But invoked projects can use a lower version of Maven by just pointing the
mavenHome to the preferred version.
In some circumstances there can be tests which fail on your system. If somebody else is trying to fix this, then it shouldn’t block your development. In such cases you want to disable these known failing tests from commandline. With this release you can do the following:
This way it is possible to exclude specific tests.
Report skipped invoked projects
Both the logging and reporting have been improved by mentioning why an invoked project was skipped. The report now follows the layout of the surefire-reports much better.
To use this plugin, add the following to the build section of your pom.xml
<plugin> <group>org.apache.maven.plugins</group> <artifactId>maven-invoker-plugin</artifactId> <version>1.8</version> </plugin>
Maven Invoker Plugin Site: http://maven.apache.org/plugins/maven-invoker-plugin
Release notes: http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=11441&styleName=Html&version=18730