#576
[Maven] Sonar, Code Coverage (UT/IT) for Single and Multi modules projects
Define Sonar / JaCoCo properties and define default Coverage report location (for no module project):
<properties> <!-- Sonar --> <sonar.version>3.7.1-RC1</sonar.version> <sonar.language>java</sonar.language> <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> <!-- Default values for non multi modules project --> <jacoco.ut>${project.basedir}/target/jacoco-ut.exec</jacoco.ut> <jacoco.it>${project.basedir}/target/jacoco-it.exec</jacoco.it> <sonar.jacoco.reportPath>${jacoco.ut}</sonar.jacoco.reportPath> <sonar.jacoco.itReportPath>${jacoco.it}</sonar.jacoco.itReportPath> </properties>
Define JaCoCo plugin version :
<pluginManagement> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.6.4.201312101107</version> </plugin> </plugins> </pluginManagement>
Define Multi module profile (by default, all sub project will be considered as single module/no module) :
<profile> <id>MULTI_MODULE</id> <activation> <property> <name>MULTI_MODULE</name> </property> </activation> <properties> <!-- Override properties definition in case of multi module project --> <jacoco.ut>${project.basedir}/../target/jacoco-ut.exec</jacoco.ut> <jacoco.it>${project.basedir}/../target/jacoco-it.exec</jacoco.it> <sonar.jacoco.reportPath>${jacoco.ut}</sonar.jacoco.reportPath> <sonar.jacoco.itReportPath>${jacoco.it}</sonar.jacoco.itReportPath> </properties> </profile>
Define UnitTesting (UT) profile :
<!-- UnitTesting --> <profile> <id>UnitTesting</id> <activation> <property> <name>!UTSkip</name> </property> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.4</version> <configuration> <properties> <property> <name>listener</name> <value>org.sonar.java.jacoco.JUnitListener</value> </property> </properties> <includes> <include>**/*Test.class</include> <include>**/*Test.java</include> <include>**/*Test</include> </includes> </configuration> </plugin> </plugins> </build> </profile>
Define IntegrationTesting (IT) profile :
<!-- IntegrationTesting --> <profile> <id>IntegrationTesting</id> <activation> <property> <name>!ITSkip</name> </property> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <!-- Minimal supported version is 2.4 --> <version>2.16</version> <executions> <execution> <id>IntegrationTesting</id> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> <configuration> <includes> <include>**/*IT.class</include> <include>**/*IT.java</include> <include>**/*IT</include> </includes> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile>
Define Jenkins / Code Coverage profile :
<profile> <id>JENKINS</id> <activation> <property> <name>BUILD_NUMBER</name> </property> </activation> <build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <executions> <execution> <id>pre-UT</id> <phase>process-test-classes</phase> <goals> <goal>prepare-agent</goal> </goals> <configuration> <include>**/*Test.class</include> <include>**/*Test.java</include> <include>**/*Test</include> <destFile>${jacoco.ut}</destFile> </configuration> </execution> <execution> <id>post-UT</id> <phase>test</phase> <goals> <goal>report</goal> </goals> <configuration> <include>**/*Test.class</include> <include>**/*Test.java</include> <include>**/*Test</include> <destFile>${jacoco.ut}</destFile> </configuration> </execution> <execution> <id>pre-IT</id> <phase>pre-integration-test</phase> <goals> <goal>prepare-agent</goal> </goals> <configuration> <destFile>${jacoco.it}</destFile> <include>**/*IT.class</include> <include>**/*IT.java</include> <include>**/*IT</include> </configuration> </execution> <execution> <id>post-IT</id> <phase>verify</phase> <goals> <goal>report</goal> </goals> <configuration> <destFile>${jacoco.it}</destFile> <include>**/*IT.class</include> <include>**/*IT.java</include> <include>**/*IT</include> </configuration> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.codehaus.sonar-plugins.java</groupId> <artifactId>sonar-jacoco-listeners</artifactId> <version>1.5</version> <scope>test</scope> </dependency> </dependencies> </profile>
To enable the mutli modules mode, use the profile -PMULTI_MODULE in maven build or add the properties -DMULTI_MODULE=true in Sonar build :
[Weblogic] ehcache : error with UpdateTimestampsCache.data file [Log] Use logback in Spring application
Comments are currently closed.