2013-03-26 69 views
0

我有一个基本的maven多模块,其中一个是POM和三个子模块:域,服务和Web。多模块maven:测试覆盖率jacoco sonar

我在pom的父级中添加了jacoco插件和所需的配置,以将测试覆盖率报告附加到通过声纳轻松定位的单个文件。

<build> 
<plugins> 
    <plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <version>0.6.2.201302030002</version> 
    <configuration> 
    <destFile>${project.basedir}/../target/jacoco.exec</destFile> 
    <append>true</append> 
    </configuration> 
    <executions> 
    <execution> 
    <id>jacoco-initialize</id> 
    <goals> 
     <goal>prepare-agent</goal> 
    </goals> 
    </execution> 
    </executions> 
    </plugin> 
</plugins> 
</build> 

我的问题是,声纳显示只有第一个模块(即域)的测试覆盖率(即使我打开该文件的编辑和我看到别人模块的类名在其被追加。

什么可能错在这种配置

对于它的价值,声纳分析是从詹金斯调用,而不是从MVN声纳:声纳

+0

詹金斯项目配置有用的东西?声纳不需要任何额外的插件。在没有任何修改的情况下,它可以很好地与现有的POM配合使用 – ZhekaKozlov 2013-03-26 18:09:01

+0

@orionll我添加了插件,特别是为了将模块中每个模块的jacoco.exec文件附加到父forlder中的一个单独的配置中。 – 2013-03-27 08:41:27

回答

0

Jenkins配置是关键:当配置正确时,不需要在单个文件中追加所有内容。

我已将此添加到配置:

sonar.modules=xxx-domain,xxx-service,xxx-web 

,我删除了在给定的问题pom.xml中配置标签。

它的工作原理就像一个魅力

对于那些谁为此努力奋斗,寻找为什么你添加jacoco - Maven的插件,你的POM中指定声纳

+0

这意味着您正在使用FreeStyle作业分析项目,而不是使用Sonar Post Build Action的Maven作业?如果是这样,你能解释为什么吗? – 2013-03-28 17:02:07

+0

@ Fabrice-SonarTeam配置如下:Jenkins通过构建Maven模块进行持续集成。我不想让我的模块知道有关声呐的任何信息。 – 2013-04-02 10:23:45

0

您可以查看我们这里的示例应用程序:https://github.com/SonarSource/sonar-examples/tree/master/projects/code-coverage/ut/maven/ut-maven-jacoco-runTests

然后,您应该能够找到您的配置有问题。

+0

提供的示例不适用于maven中的多个模块。 – 2013-03-27 14:12:18

+0

另外我指定我从詹金斯运行声纳,而不是从mvn声纳运行声纳:sonar – 2013-03-27 14:15:54

+0

那么,我们正在使用Sonar Jenkins插件分析Jenkins服务器上的Sonar代码库,并且我们没有在POM中指定任何特殊的东西。它使用与我给你的例子相同的配置。所以如果你没有像需要配置JaCoCo Maven插件那样的话,那么这个应该可以解决=>不需要将所有的jacoco.exec文件附加到一个文件中。 – 2013-03-27 14:20:57

相关问题