2017-09-22 120 views
2

Jacoco插件顯示詹金斯報告覆蓋率爲0%0覆蓋,但是,當我跑在本地系統中相同的命令,jacoco正確生成報告。我使用下面的命令:Jacoco代碼覆蓋率報告顯示詹金斯

MVN -s XYZ/settings.xml中-f XYZ/XYZ/pom.xml的全新安裝org.jacoco:jacoco - Maven的插件:報告聚集

所以當我在jenkins中運行這個命令時,它會生成錯誤的報告。我已經在WorkSpace目錄中爲jenkins中的相應項目添加了它。它顯示每個項目的覆蓋率爲0%。但是當我在本地系統中運行相同的maven命令時,jacoco-maven會生成正確的覆蓋率報告。我可以看到他們,因爲他們是在HTML格式。

我的pom.xml中有這樣一段與Maven運行jacoco:

<plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <version>0.7.7.201606060606</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>prepare-agent</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>report</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>report</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

我使用以下工具:

jacoco-maven-plugin version 0.7.7 
jenkins-jacoco-plugin version 2.0.1 
apache-maven version 3.5.0 

而且這是我後讓我的詹金斯控制檯日誌maven命令完成。

[JaCoCo plugin] Collecting JaCoCo coverage data... 
[JaCoCo plugin] **/**.exec;**/target/classes;**/src; locations are configured 
[JaCoCo plugin] Number of found exec files for pattern **/**.exec: 0 
[JaCoCo plugin] Saving matched execfiles: 
[JaCoCo plugin] Saving matched class directories for class-pattern: **/target/classes: 
<<<<<<Classes folders list for all project>>>>>>>> 
[JaCoCo plugin] Loading inclusions files.. 
[JaCoCo plugin] inclusions: [] 
[JaCoCo plugin] exclusions: [] 
[JaCoCo plugin] Thresholds: JacocoHealthReportThresholds [minClass=0, maxClass=0, minMethod=0, maxMethod=0, minLine=0, maxLine=0, minBranch=0, maxBranch=0, minInstruction=0, maxInstruction=0, minComplexity=0, maxComplexity=0] 
[JaCoCo plugin] Publishing the results.. 
[JaCoCo plugin] Loading packages.. 
[JaCoCo plugin] Done. 
[JaCoCo plugin] Overall coverage: class: 0, method: 0, line: 0, branch: 0, instruction: 0 
Finished: SUCCESS 

下面是我詹金斯jacoco報告設置:

enter image description here

這是我的目標目錄的文件夾結構。

enter image description here

目標目錄是項目目錄下存在。

所以我真正關心的是爲什麼詹金斯這些文件,即覆蓋文件,同時在我的本地系統相同的命令生成正確的覆蓋報告沒有得到正確生成。

謝謝。

P.S. : - 我在多模塊環境中執行此操作,其中我的源文件存在於一個項目中,並且測試文件在另一個項目中可用。 因此,對於每個源項目都存在一個測試項目。 另外一件事我剛剛注意到,在運行maven命令之後, 類文件在source的/ target/classes目錄下創建,而報告的html文件在測試項目的/ target/site目錄下生成。我不確定這是爲什麼。

+0

行'的模式發現EXEC文件數**/** EXEC:。0'在日誌可疑 - 胡亂猜測,但你可以嘗試像'**/* EXEC '或'**/jacoco.exec'? – Godin

+0

是的,我會嘗試。但是jenkins系統本身沒有正確生成文件。所以,即使它使用正確的路徑執行exec文件,它也不會顯示正確的報告bcz報告本身在jenkins框中生成錯誤。 – Jay

+0

請再閱讀文檔http://www.jacoco.org/jacoco/trunk/doc/report-mojo.html和http://www.jacoco.org/jacoco/trunk/doc/report-aggregate-mojo .html關於生成文件的位置等等。奇怪的是,你將它們混合在一起,並且你要求從命令行執行最後一個,因爲它考慮了執行模塊的依賴關係,只有那些屬於reactor的部分,也就是部分目前的構建。 – Godin

回答

0

我發現一段代碼我錯過了,因爲它的報告沒有詹金斯生成。

我忘了裏面添加父pom.xml中的標籤jacoco - Maven的插件。 我只在&中加入了它。

:-)