今天碰到一个问题,CI上的一个job,有多个子目录,分别生成各自的Jacoco的Code coverage report,我们想合并这些报表。研究了一下jacoco:merge的maven插件和ant任务,由于我们是Scala的SBT项目,最后采用如下方法实现。
添加一个pom_cc.xml文件,内容如下。
?
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.squbs</groupId> <artifactId>unicomplex-mergecc</artifactId> <version>0.0.2-SNAPSHOT</version> <!-- Packing Type is bundle for OSGI Library Bundle --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.6</version> <executions> <execution> <phase>post-integration-test</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <!-- Execute an ant task within maven --> <echo message="Generating JaCoCo Reports" /> <taskdef name="report" classname="org.jacoco.ant.ReportTask"> <classpath path="${basedir}/target/jacoco-jars/org.jacoco.ant.jar" /> </taskdef> <mkdir dir="${basedir}/target/coverage-report" /> <report> <executiondata> <fileset dir="${basedir}/unicomplex/target/scala-2.10/jacoco"> <include name="jacoco.exec" /> </fileset> <fileset dir="${basedir}/zkcluster/target/scala-2.10/jacoco"> <include name="jacoco.exec" /> </fileset> </executiondata> <structure name="jacoco-multi Coverage Project"> <group name="jacoco-multi"> <classfiles> <fileset dir="${basedir}/unicomplex/target/scala-2.10/classes" /> <fileset dir="${basedir}/zkcluster/target/scala-2.10/classes" /> </classfiles> <sourcefiles encoding="UTF-8"> <fileset dir="${basedir}/unicomplex/src"></fileset> <fileset dir="${basedir}/zkcluster/src"></fileset> </sourcefiles> </group> </structure> <html destdir="${basedir}/target/coverage-report/html" /> <xml destfile="${basedir}/target/coverage-report/coverage-report.xml" /> <csv destfile="${basedir}/target/coverage-report/coverage-report.csv" /> </report> </target> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>org.jacoco</groupId> <artifactId>org.jacoco.ant</artifactId> <version>0.7.1.201405082137</version> </dependency> </dependencies> </plugin> </plugins> </build></project>
?然后调用mvn clean verify -f pom_cc.xml来执行合并。
?
?