2013-03-26 334 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