2016-09-22 3 views
6

Ich habe versucht, Code-Coverage-Berichte mit jacoco Plugin in Maven für ein Multi-Modul-Projekt, an dem ich arbeitete, zu generieren.Maven Jacoco Konfiguration für Multi-Modul-Projekte

Ich habe Folgendes in meine Eltern pom.xml innerhalb der Build-Tags hinzugefügt.

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

Auf läuft mvn überprüfen die jeweiligen jacoco Berichte wurden für jedes Modul erzeugt bei "Projekt-root \ Modul \ target \ site \ jacoco \"

Ist es möglich, eine zu erzeugen konsolidierter jacoco-report im project-root mit den test-deckungsdetails jedes moduls?

Bitte schlagen Sie die bestmögliche Möglichkeit vor, die einzelnen Modulreports zusammenzuführen.

Antwort

5

Sicher ist!

Ich brauchte eine Weile und ein paar Quellen, um dieses Muster zu kochen, aber hat gut funktioniert.

Für ein Multi-Modul Maven Projekt:

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

Die LIB Projekte sowohl ihre eigenen Unit-Tests haben.

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 Projekte pom.xml die die JaCoCo Plugins Ausführung erben, müssen also nur die argline im todsicheren Plugin verkabeln.

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

ich zum Aufrollen Integrationstests sowie Unit-Tests für JaCoCo eine erweiterte Antwort haben wird, über Sonar berichtet, können Sie my detailed answer here sehen.

+0

Danke .... Ich folgte den Schritten in Ihrer detaillierten Antwort erwähnt .. Endlich funktionierte es :) – John

0

Zusätzlich zu den in markdsievers vorgeschlagenen Schritte ausführliche Antwort, musste ich Setup Sonarqube-5.3 (unterstützt jdk 7+) in localhost: 9000

Setup SonarQube

Und verwenden mvn Paket zu jacoco erzeugen .exec Dateien. Dann mvn Sonar: Sonar, um Bericht im Sonar-Dashboard zu generieren.

Verwandte Themen