Jacoco Maven multi projet de module de couverture
Semble que il ya un couple de questions, qui sont assez vieux et les choses ont changé à partir de Java 8 support de Jacoco.
Mon Projet contient structure suivante
pom.xml
|
|
-----sub module A pom.xml
|
|
-----sub module B pom.xml
|
|
-----sub module C pom.xml
J'ai configuré le main pom
comme ce
Principal POM.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>jacoco-multi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>projectA</module>
<module>projectB</module>
</modules>
<properties>
<jacoco.version>0.5.7.201204190339</jacoco.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit-dep</artifactId>
<version>4.10</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3.RC2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3.RC2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.5.201505241946</version>
<configuration>
<destFile>${project.basedir}/../target/jacoco.exec</destFile>
<append>true</append>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.16</version>
<executions>
<execution>
<id>default-integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
</plugin>
</plugins>
</build>
</project>
Un Pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>jacoco-multi</artifactId>
<groupId>com.test</groupId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>projectA</artifactId>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
B pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>jacoco-multi</artifactId>
<groupId>com.test</groupId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>projectB</artifactId>
<dependencies>
<dependency>
<groupId>com.test</groupId>
<artifactId>projectA</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
</plugin>
</plugins>
</pluginManagement>
</build>
Je suis l'exécution de cette commande mvn clean package
. Je peux voir jacoco.exec est arriver généré, mais je ne suis pas capable de voir les rapports HTML sont en cours pour vérifier les données.
Merci de m'aider avec cela.
Un autre point est, ma configuration est correcte pour Multi-Module
projets?
Mise à jour
Du problème identifié.
<destFile>${project.basedir}/../target/jacoco.exec</destFile>
changé à
<destFile>${project.basedir}/target/jacoco.exec</destFile>
Maintenant, c'est la génération de rapports pour les différents modules.
Aucune idée de la façon de générer des rapport consolidé
target/site/jacoco-ut/index.html
?oui. Je peux voir seulement
jacoco.exec
fichier et aucun autre dossier en cours de création sous target
Pase les journaux de
mvn clean install
ici de la partie lors de la jacoco plugin coups de pied dansajouté
veuillez vérifier la mise à jour du post. Comment puis-je générer des rapport de synthèse?
OriginalL'auteur Reddy | 2015-10-12
Vous devez vous connecter pour publier un commentaire.
JaCoCo version 0.7.7 peut générer un rapport de couverture globale à partir de plusieurs modules Maven grâce à un nouveau but
jacoco:report-aggregate
.Résumé: créer un sous-module exclusivement pour le rapport global et de faire de ce sous-module de déclarer les dépendances de la fratrie submodules qu'il a besoin d'agrégat
OriginalL'auteur Rogério
Copier le code à la fin de l'article à https://dzone.com/articles/jacoco-maven-multi-module et le mettre dans .... fonctionne pour moi. Juste ajouter autant de modules que vous souhaitez signaler. Aussi j'avais besoin de changer antrun de 1,7 à 1,8 pour les tâches ant pour exécuter.
OriginalL'auteur barryku
Un problème dans multimodule projets est dû, si l'agrégateur pom est utilisé en tant que parent pom pour les modules, soit, comme c'est le cas dans l'exemple ci-dessus:
Dans ce cas, l'ordre de construction est:
ce qui signifie, que les parents de l'agrégateur ne peut pas recueillir de l'information complète. Dans mon cas, un transfert de données en sonarQube par mvn sonar:sonar a entraîné inattendu et incomplète des résultats.
La modification de la structure du module:
va changer l'ordre de la génération:
Dans ce cas agrégateur sera le dernier et le travail avec les résultats des modules. Dans mon cas, les résultats de SonarQube ont été comme prévu.
OriginalL'auteur Michael Remme
Après scannning de nombreuses solutions, j'ai créé un simple mais complet Jacoco projet de démonstration montrant:
Profiter de la simple projet de démonstration.
OriginalL'auteur tjm1706