2017-02-28 97 views
0

我正在爲使用多個Maven項目/模塊來創建最終將成爲一個產品的公司工作。幫我解釋一下,想象類似的文件結構如下:多個Maven項目,單個JaCoCo站點?

- Parent Directory 
    - Project_1 
      - /src/ 
      - /target/ 
      - POM.xml 
    - Project_2 
      - /src/ 
      - /target/ 
      - POM.xml 

一路上我們都使用JUnit單元測試我們的代碼的方式,這是我們實現上述的代碼一定百分比閾值的重要合同要求覆蓋我們的測試。

我們使用JaCoCo以HTML網站的形式生成覆蓋率報告。 JaCoCo本身被證明是非常寶貴的,但我們遇到的一個主要問題是,這會在/target/site/jacoco/目錄下創建一個單一站點。

我已經做了一些調查,發現除非我誤解,JaCoCo默認不支持將多個Maven項目集成到一個JaCoCo報告中的能力。

所以我的問題是,任何人都可以提出一個替代解決方案 - 這將允許我們將多個報告彙總到單個Web服務器上?

我們的一個選擇是將所有網站移動到Web服務器上的單個文件夾中,然後將索引頁面鏈接到一起,但最多隻能是「笨拙」。例如:

- Web Server 
    - index.html 
    - Project_1 
      - (Generated report files) 
    - Project_2 
      - (Generated report files) 

任何更好的建議將不勝感激。

+0

也許使用Ant Task(http://www.jacoco.org/jacoco/trunk/doc/ant.html)來生成報告,比Maven Plugin提供更大的靈活性? – Godin

回答

2

JaCoCo目前沒有提供簡單的方法來實現此目的。然而,他們這樣做指定此處介紹三種選擇:https://github.com/jacoco/jacoco/wiki/MavenMultiModule

他們最合適的方法包括創建一個包含所有其它模塊的依賴一個獨立的記者模塊(被稱爲戰略GitHub的文章:模塊使用依賴 )。

記者模塊使用maven目標獲取所有單個報告並將它們綁定到一起。

一個例子項目:

https://prismoskills.appspot.com/lessons/Maven/Chapter_06_-_Jacoco_report_aggregation.jsp

+0

非常翔實的答覆,謝謝。 – Scarfe

1

有您能與IMO

去許多不同的方法

所有你可能要考慮像聲納,這樣你就會編譯所有的第一你的模塊,並將運行一個聲納,將檢查其他事情的覆蓋面。 Sonar會將結果上傳到聲納服務器(包括數據庫和所有內容),以便您能夠在UI中看到出錯的地方

另一種方法是隻需要滾動您自己的Maven插件(假設您正在使用行家)。如果我沒有弄錯,jacoco生成的報告也是一個XML報告。因此,它可以很容易地被解析 因此,可以編寫一個maven插件來識別所有像這樣的報告,解析它們並提供一些統一的視圖。

另一種方法是當覆蓋率未達到某個閾值時導致整個構建失敗。我知道,它不直接回答你的問題,但如果你這樣做,你會保證最低水平的覆蓋率(可以隨時在項目水平上增加)

希望這有助於提供一些額外的指導。