JaCoCo avec Maven - manquant de l'exécution du fichier de données
Nous avons une Maven multi projet de module composé d'un parent (HelloWorld) et les différents enfants (HelloWorldServices et HelloWorldPresentation) et l'utilisation de Jenkins à construire.
L'erreur après l'exécution de la mise à l'essai réussie est
[INFO] --- jacoco-maven-plugin:0.7.6.201602180812:report (default-cli) @ HelloWorldServices ---
[INFO] Skipping JaCoCo execution due to missing execution data file:/var/lib/jenkins/workspace/HelloWorld/HelloWorldServices/target/jacoco.exec
Les lignes avant il dit
[INFO] --- jacoco-maven-plugin:0.7.6.201602180812:prepare-agent (default-cli) @ HelloWorldServices ---
[INFO] argLine set to -javaagent:/var/lib/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.6.201602180812/org.jacoco.agent-0.7.6.201602180812-runtime.jar=destfile=/var/lib/jenkins/workspace/HelloWorld/HelloWorldServices/target/jacoco.exec
C'est la façon dont j'ai défini le pom parent JaCoCo plugin:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.6.201602180812</version>
<configuration>
<destfile>${project.artifactId}/target/jacoco.exec</destfile>
<datafile>${project.artifactId}/target/jacoco.exec</datafile>
</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>
En aucun pom ai-je le mentionner explicitement infaillible. J'ai aussi essayé ce que vous trouvez partout pour mettre la argLine dans la configuration, mais tous avec le même résultat. Le JaCoCo .exec fichier n'a été créé, peu importe ce que je fais. Comme pour les objectifs, j'utilise
mvn clean install jacoco:prepare-agent jacoco:report
Depuis quand je omettre le jacoco objectifs, il n'a même pas afficher le message d'information.
mvn clean jacoco:prepare-agent install
à la place (le mandataire entre les deux phases)OriginalL'auteur dasLort | 2016-03-30
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas appeler l'agent après l'installation de la phase, mais avant, donc au lieu de l'invocation:
Vous devriez appeler
La principale raison est la suivante: l'agent ne pourra pas participer à la construction du cycle de vie, le
test
phase sera déjà exécuté dans le cadre de lainstall
phase, puis Maven va exécuter l'agent que par ligne de commande d'invocation, mais il sera trop tard.Vous devriez également changer la configuration du plugin ci-dessus pour:
Note: j'ai supprimé la section de configuration, car il a été fait pointant vers des valeurs par défaut. En outre, les éléments XML sont des cas sensitifs ici, de sorte que votre
datafile
élément a été tout simplement ignorés, il doit avoir étédataFile
à la place. La même chose s'applique àdestFile
.La
préparez-agent
objectif est déjà à l'aide de${project.build.directory}/jacoco.exec
en tant que par défautdestFile
valeur, la même chose s'applique à ladataFile
de la valeur pour l'rapport
objectif. La principale raison de ce changement permettrait d'être plus flexible et des standards de construction, en ne s'appuyant pas surartifactId
comme nom de projet (la valeur par défaut, mais toujours pas obligatoire) et en utilisant le plus générique${project.build.directory}
propriété plutôt que de pointer directement àtarget
.Dernière remarque: assurez-vous de configurer le Jacoco Plugin exécutions au sein de la
build/plugins
section et pasbuild/pluginManagement/plugins
section. LepluginManagement
section est faite pour la gouvernance et la commune, l'harmonisation des versions ou des configurations, mais il sera ignoré si le plugin correspondant serait de ne pas être déclaré en vertu de l'build/plugins
.Comme par officiel POM Maven de référence
(note: en gras est de moi)
mvn install
? Si je n'ai pas l'appeler explicitement la jacoco objectifs, ils ne seront pas exécutées.la version de Maven utilisez-vous? Je ne pouvais pas reproduire votre problème avec un échantillon multi projet de module, je n'ai pas tout ignorer l'avertissement et bien eu jacoco rapports
Maven 3.3.9 et (Jenkins) Maven Plugin d'Intégration 2.12.1. Donc, vous dites que vous pouvez
mvn install
et il avec la configuration ci-dessus appel jacoco?J'ai trouvé que la modification du META-INF/plexus/default-bindings.xml fichier pourrait faire l'affaire. Malheureusement, je pense que ce serait à l'intérieur d'un pot lors de l'utilisation de l'Jenkins, Maven plugin. De plus, je n'ai pas trouver dit pot (pas dans maven-core-3.0.jar)
en effet vous ne devez pas modifier, ce qui change de le faire fonctionner?
OriginalL'auteur
Je pense que "destfile" et "fichier" sont sensibles à la casse, donc essayez de les remplacer par "destFile" et "fichier", peut-être que ça marchera 🙂
OriginalL'auteur