Maven Cobertura plugin - un rapporto per il progetto a più moduli
Domanda
Sto usando Maven cobertura plugin per la copertura codice di rapporto nel mio progetto multimodulo.
Il problema è che non so come generare un rapporto per tutti i moduli di progetto.
Finora ho generato rapporti separati per ogni modulo, ma sarebbe bello avere un rapporto per tutto il progetto.
La mia configurazione padre pom:
<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>
Soluzione
A mia conoscenza, questo non è attualmente supportato, vedi MCOBERTURA-65 . Ma la questione ha un cerotto attaccato, forse provare. Ma il mio suggerimento sarebbe quello di usare qualcosa come Sonar alle metriche aggregate.
Altri suggerimenti
Il plugin è stato aggiornato dal questa domanda è stato chiesto (e ultimo ha risposto) per consentire ora rapporti aggregati, tramite la proprietà di configurazione aggregate
nel POM genitore.
Questo produce il rapporto di copertura aggregato alla target/site/cobertura/index.html
che includerà tutti i moduli.
(Ogni modulo sarà anche avere un proprio rapporto di prodotto, se questo è di alcuna utilità.)
Parent 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>
Sono stato con Hudson come strumento di Continuous Integration. Il plugin Cobertura mi permette di vedere la copertura del codice di tutti i moduli del bambino durante il controllo sul genitore.
La Jenkins Cobertura plug aggregati della relazione automaticamente, ma se siete interessati nel file di copertura in sé per altri motivi si può fare seguendo sotto procedura:
-
Scarica Cobertura da qui
-
Vai al tuo spazio di lavoro del progetto -> trovare tutti i file
.ser
e rinominarli(i=0; find . | grep cobertura.ser$ | while read line;do echo $line; cp -i $line cobertura$i.ser;i=$(($i+1));done;)
-
uso
cobertura-merge.sh
per generare file di.ser
globale~/cobertura-2.0.3/cobertura-merge.sh --datafile cobertura.ser cobertura*.ser
-
uso
cobertura-report.sh
per generare il rapporto in archivio .ser globale~/cobertura-2.0.3/cobertura-report.sh ./cobertura.ser --destination ./ --format xml
Si avrà la coverage.xml
globale generato nella directory corrente.
Si può usare per qualsiasi tipo di ulteriore elaborazione.