2010-09-22 11 views
7

Ich benutze Maven Cobertura-Plugin, um Berichterstattung in meinem Multimodul-Projekt zu melden.Maven Cobertura Plugin - ein Bericht für Multimodul-Projekt

Das Problem ist, dass ich nicht weiß, wie man einen Bericht für alle Module im Projekt erzeugt.

Bis jetzt habe ich separate Berichte für jedes Modul erstellt, aber es wäre nett, einen Bericht für das ganze Projekt zu haben.

Meine Eltern pom Konfiguration:

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>cobertura-maven-plugin</artifactId> 
     <version>2.4</version> 
     <inherited>true</inherited> 
     <executions> 
      <execution> 
       <phase>test-compile</phase> 
       <goals> 
        <goal>clean</goal> 
        <goal>cobertura</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 

Antwort

2

Meines Wissens ist dies derzeit nicht unterstützt werden, finden MCOBERTURA-65. Aber das Problem hat einen Patch, vielleicht versuchen Sie es. Aber mein Vorschlag wäre, etwas wie Sonar zu verwenden, um Metriken zu aggregieren.

+0

Es wird jetzt unterstützt. Siehe meine Antwort. – vegemite4me

0

Ich habe Hudson als ein Continuous Integration Tool verwendet. Das Cobertura-Plugin ermöglicht es mir, die Codeabdeckung aller untergeordneten Module anzuzeigen, wenn Sie das übergeordnete Element überprüfen.

0

Das Jenkins Cobertura Plugin aggregiert den Bericht automatisch, aber wenn Sie daran interessiert sind in der Berichterstattung Datei selbst für einige andere Gründe, die Sie, indem Sie unten Prozedur tun können:

  1. Herunterladen Cobertura von here

  2. Gehen Sie zu Ihrem Projekt-Arbeitsbereich -> finden Sie alle .ser Dateien und benennen Sie sie um

    (i=0; find . | grep cobertura.ser$ | while read line;do echo $line; cp -i $line cobertura$i.ser;i=$(($i+1));done;) 
    
  3. Verwendung cobertura-merge.sh zum globalen .ser Datei

    ~/cobertura-2.0.3/cobertura-merge.sh --datafile cobertura.ser cobertura*.ser 
    
  4. Verwendung erzeugt cobertura-report.sh Bericht über globale .ser-Datei zu erzeugen

    ~/cobertura-2.0.3/cobertura-report.sh ./cobertura.ser --destination ./ --format xml 
    

Sie die globalen coverage.xml im aktuellen Verzeichnis erzeugt haben. Sie können es für jede Art von Verarbeitung weiter verwenden.

+0

Dies kann auch nur über die Befehlszeile mit maven: 'mvn cobertura: cobertura -Dcobertura.aggregate = true -Dcobertura.report.format = xml' Sie können das Berichtsformat ändern, wie Sie möchten. Nach dem Github Repo des Cobertura Maven Plugins ist diese Funktion verfügbar [seit v2.5] (https://github.com/mojohaus/cobertura-maven-plugin/blob/master/src/main/java/org /codehaus/mojo/cobertura/CoberturaReportMojo.java#L126) (commit [64a8823] (https://github.com/mojohaus/cobertura-maven-plugin/commit/64a8823866b4c8be74a44383162088d616c65185#diff-e4171be1b77f9a9b331e21a0661c1433R126)). – clapsus

16

Das Plug-in wurde aktualisiert, seit diese Frage (und zuletzt beantwortet) nun die aggregierte Berichterstellung über die Konfigurationseigenschaft aggregate im übergeordneten POM ermöglicht.

Dies erzeugt den aggregierten Erfassungsbericht unter target/site/cobertura/index.html, der alle Module enthält.

(Jedes Modul wird auch eigenen Bericht erzeugt es, wenn das irgend ist.)

Eltern pom.xml

<modules> 
    <module>moduleA</module> 
    <module>moduleB</module> 
    <module>moduleC</module> 
<modules> 
<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>cobertura-maven-plugin</artifactId> 
       <version>2.6</version> 
       <configuration> 
        <check/> 
        <formats> 
         <format>html</format> 
         <format>xml</format> 
        </formats> 
        <aggregate>true</aggregate> 
       </configuration> 
      </plugin> 
      ... 
    </pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
... 
</build> 
+3

Dies sollte die akzeptierte Antwort sein! – MKorsch

+0

Sollte ich 'mvn cobertura: cobertura -Dcobertura.report.format = xml' command auf dem übergeordneten Modul ausführen und es wird einen aggregierten Bericht im übergeordneten Modul generieren? – Varun

+0

Ich habe den Befehl 'mvn cobertura: cobertura -Dcobertura.report.format = xml' für das übergeordnete Paket ausgeführt. Er aggregiert die Berichte der untergeordneten Module, zeigt jedoch keine Abdeckung einer Klasse im untergeordneten Mavenmodul dieses übergeordneten Moduls an, wenn diese Klasse vorhanden ist durch Klasse von verschiedenen Kind-Maven-Modul dieses Eltern-Modul abgedeckt. – Varun

Verwandte Themen