2016-09-22 38 views
6

Üzerinde çalıştığım çok modüllü bir proje için maven'de jacoco eklentisini kullanarak kod kapsamı raporları oluşturmaya çalışıyordum.Maven Jacoco Çok modüllü projeler için yapılandırma

Aşağıdakileri, temel etiketlerimdeki ana pom.xml dosyasına ekledim., ilgili jacoco raporları her modül için oluşturulan doğrulamak mvn çalıştıran On

 <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> 

"projesi kök \ modülü \ hedef \ sitesinden \ \ jacoco"

mi mümkün bir oluşturmak için Her modülün test kapsamı ayrıntılarını içeren proje kökünde konsolide jacoco raporu?

Lütfen bireysel modül raporlarını birleştirmenin mümkün olan en iyi yolunu önerin.

cevap

5

Elbette!

Bu desenleri pişirmek için biraz zaman harcadım ama iyi çalıştı. Bir çok modüllü Maven projesi için

:

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

LIB proje hem kendi birim testleri var. pom.xml JaCoCo eklentileri yürütülmesine devralır

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 projeleri, yani sadece Surefire eklenti argline kadar Tel gerekir.

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

Ben Sonar aracılığıyla rapor ediliyor JaCoCo için entegrasyon testleri yanı sıra birim testleri yuvarlayarak için uzun bir cevabım var, sen my detailed answer here görebilirsiniz. markdsievers detaylı cevap önerilen adımlara ek olarak

+0

Teşekkürler .... Ayrıntılı yanıtınızda belirtilen adımları takip ettim .. Sonunda Çalıştım :) – John

0

, ben kurulum zorunda sonarqube-5.3 (jdk destekler 7+) localhost içinde: 9000

Setup SonarQube

Ve kullanmak mvn paketi jacoco oluşturmak için .exec dosyaları. Ardından, mvn sonar: sonar gösterge tablosunda rapor üretmek için sonar.