There would be scenarios where you need to skip few modules when building parent project because the unit test fail in child project. In such scenario we should define the surefire plugin at parent pom.xml and include and exclude the child modules for which the unit test should be executed.
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.4.2</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> </plugins> </build> [...] </project>
Rather than defining plugin(in our case surefire plugin), we can create a profile and define the behavior of plugins within the profile.
<project> [...] <profiles> <profile> <id>noTest</id> <activation> <property> <name>noTest</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.4.2</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> </plugins> </build> </profile> </profiles> [...] </project>
Now lets include and exclude child modules for which unit test should be carried out
Including Unit Test
Only the following(ChildModule3.java) file would be included and others would be excluded
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M4</version> <configuration> <includes> <include>ChildModule3.java</include> </includes> </configuration> </plugin> </plugins> </build> [...] </project>
Excluding Unit Test
Only the following(ChildModule1.java, ChildModule2.java) file would be excluded
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M4</version> <configuration> <excludes> <exclude>**/ChildModule1.java</exclude> <exclude>**/ChildModule2.java</exclude> </excludes> </configuration> </plugin> </plugins> </build> [...] </project>
How to activate profile in command prompt
>>mvn clean install -PnoTest
How to see list of active Profiles
>>mvn help:active-profiles
If you want to know what version of an specific plugin you have installed you can do this:
mvn -Dplugin=org.codehaus.mojo:wagon-maven-plugin help:describe mvn -Dplugin=groupId:artifactId help:describe mvn help:effective-pom
How to execute life cycle task using specific plugin
>>mvn groupID:artifactID:version:goal >>mvn org.apache.maven.plugins:maven-checkstyle-plugin:2.5:checkstyle