2016-09-22 1393 views
6

我正尝试使用maven中的jacoco插件生成代码覆盖率报告,用于我正在处理的多模块项目。Maven Jacoco用于多模块项目的配置

我在构建标记中的父pom.xml中添加了以下内容。

 <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.7.8-SNAPSHOT</version> 
      <configuration> 
       <output>file</output> 
       <append>true</append> 
      </configuration> 
      <executions> 
       <execution> 
        <id>jacoco-initialize</id> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>jacoco-site</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.18.1</version> 
      <configuration> 
       <argLine>${argLine}</argLine> 
      </configuration> 
     </plugin> 

在运行MVN验证,在每个模块产生各自的jacoco报告“项目根\模块\目标\网站\ jacoco \”

是否有可能产生在包含每个模块的测试覆盖细节的项目根目录下整合jacoco报告?

请建议合并单个模块报告的最佳方法。

回答

5

当然是!

花了一段时间和几个来源来煮这种模式,但运作良好。

对于多模块Maven项目:

ROOT 
|--LIB-1 
|--LIB-2 

LIB项目都有自己的单元测试。

ROOT pom.xml

<!- properties--> 
<jacoco.reportPath>${project.basedir}/../target/jacoco.exec</jacoco.reportPath> 

<!-- build/plugins (not build/pluginManagement/plugins!) --> 
<plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <version>0.7.6.201602180812</version> 
    <executions> 
     <execution> 
      <id>agent-for-ut</id> 
      <goals> 
       <goal>prepare-agent</goal> 
      </goals> 
      <configuration> 
       <append>true</append> 
       <destFile>${jacoco.reportPath}</destFile> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

LIB项目pom.xml将继承的JaCoCo插件执行,所以只需要接线了argline在神火插件。

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.18.1</version> 
    <configuration> 
     <argLine>${argLine}</argLine> 
    </configuration> 
</plugin> 

我必须通过声纳被报道卷起集成测试以及单元测试JaCoCo扩展的回答,您可以看到my detailed answer here

+0

谢谢....我按照你的详细答案中提到的步骤..最后它工作:) – John

0

除了markdsievers详细解答提示的步骤,我不得不设置sonarqube-5.3(支持JDK 7+)在本地主机:9000

Setup SonarQube

并使用MVN包产生jacoco .exec文件。 然后mvn声纳:声纳在声纳仪表板中生成报告。