JaCoCo nicht erzeugen jacoco.exec, bis nach dem überspringen von JaCoCo Ausführung
Ich habe Probleme beim generieren von AHP Berichte über JaCoCo in einem meiner Module. Wenn der Aufbau beginnt, sehe ich JaCoCo richtig einstellen argLine mit:
[INFO] jacoco.agent.argLine set to -javaagent:<...>/.m2/repository/org/jacoco/org.jacoco.agent/0.7.2.201409121644/org.jacoco.agent-0.7.2.201409121644-runtime.jar=destfile=<...>/target/jacoco.exec
Jedoch, die .exec noch nicht erstellt wurden durch die Zeit, maven versucht zum laufen JaCoCo:
[INFO] Skipping JaCoCo execution due to missing execution data file:<...>/target/jacoco.exec
Den jacoco.exec ist schließlich erstellt, nach maven hat übersprungen JaCoCo Ausführung. Daher kann ich noch generieren AHP berichten, wenn ich wieder laufen das bauen ohne Reinigung.
Ich gesehen habe in verschiedenen anderen Fragen, muss ich vorsichtig sein mit Maven-Surefire mit JaCoCo. Allerdings habe ich nicht explizit argLine in meine Surefire-plugins oder ein plugin für diese Angelegenheit. Ich fange an zu Fragen, wenn man von den anderen plugins, ist die Entführung des argLine parameter automatisch wie JaCoCo tut.
Hier ist eine Liste von allen plugins verwendet:
- jacoco-maven-plugin
- vertx-maven-plugin
- maven-resources-plugin
- maven-dependency-plugin
- maven-surefire-plugin
- maven-failsafe-plugin
- maven-surefire-report-plugin
- maven-assembly-plugin
Sehe ich eine verdächtige Nachricht in der build-Ausgabe:
[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ <module> ---
[INFO] Changes detected - recompiling the module!
Ich bin mir nicht sicher, ob das relevant ist, aber es wird zweimal angezeigt, bevor die Nachricht Überspringen, und nicht in ein Modul, wo JaCoCo funktioniert.
Irgendwelche Ideen?
*Bearbeiten - Hier ist der jacoco config
<plugins>
<...>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.jacoco</groupId>
<artifactId>
jacoco-maven-plugin
</artifactId>
<versionRange>
[0.7.2.201409121644,)
</versionRange>
<goals>
<goal>prepare-agent</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
Ich bin mir nicht ganz sicher, was das plugin-management-Teil ist zu tun, aber es zu kommentieren, sich nicht alles reparieren. Ich habe auch versucht, indem Sie den JaCoCo-plugin-config über die surefire/failsafe-config bei, um wichtig für die plugins teilen die gleichen Ziele, aber das hat auch nicht geholfen.
*edit 2 - Sieht aus wie das problem war todsichere ' s beinhaltet. Kommentieren Sie aus, irgendwie behebt JaCoCo ist .exec-generation, und JaCoCo funktioniert.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<!-- <includes>
<include>**/unit/**/*Test*.java</include>
</includes> -->
</configuration>
</plugin>
Jemand wissen, warum?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur eine Ergänzung zu den bereits gegebenen Antworten.
Es könnte passieren, dass in Ihrem maven-surefire-plugin-Konfiguration, die Sie bereits verwenden die argLine Konfiguration zu überschreiben, so etwas wie der verwendete Speicher. Wenn Sie dies tun, der argline set von jacoco-maven-plugin wird nicht verwendet werden, die andernfalls zu generieren, die jacoco Bericht.
In diesem Fall weisen Sie einem Parameternamen den jacoco-maven-plugin-config", und klicken Sie dann verweisen Sie in Ihrem maven-surefire-plugin argLine parameter.
[...]
Um dieses Problem zu lösen würde ich die folgenden drei Schritte:
Bestimmen, welche der plugin-Ausführung ist die Herstellung der
jacoco.exec
- Datei. Zu tun, dass Ihnen die Ausführung von Maven mit dem debug-Protokollierung aktiviert (mvn -X
) und suchen für diejacoco.agent.argLine
name der Eigenschaft oder den Wert in der Ausgabe. Sie könnten auch einen Blick auf die effektive POM (mvn help:effective-pom
) im Fall der entsprechenden Konfiguration kommt von der parent-POM. Beachten Sie, dass meine Vermutung ist, dass es eine Ausführung desmaven-failsafe-plugin
.Bestimmen Sie die phase, das plugin wird ausgeführt. E. g. für
maven-failsafe-plugin
dies würde wahrscheinlichintegration-test
.Ändern Sie die Konfiguration des JaCoCo-plugin, so dass die
report
Ziel ist es, später ausgeführt in der build-lifecycle. E. g. wenn diejacoco.exec
- Datei wird erzeugt, in derintegration-test
phase, die Sie ausführen könnte diereport
Ziel in derpost-integration-test
phase.für mich einer der Gründe für die exec-Datei nicht immer generiert wird, wenn ich die prepare-agent , prepare-package Ziele innerhalb der plugin Sektion pluginManagement
als ich versuchte, die außerhalb pluginManagement , ich war erfolgreich in der Lage zu führen Sie die gleichen und jacoco-exec-Datei generiert wurde, mit mvn clean install-Befehl
meine pomfile ist wie folgt :
Ich fand keine Lösung, aber ich habe die folgenden:
mvn clean jacoco:Vorbereitung-agent installieren
erstellen Sie die Datei jacoco.exec, aber ausführen von mvn sonar:sonar nicht erstellen Datei.
Lösung:
Schritt 1:
mvn clean jacoco:Vorbereitung-agent installieren
Schritt 2:
kopieren Sie die Datei jacoco.exec von /src/main/resources
Schritt 3:
Hinzufügen nächste plugin auf pom.xml
Schritt 4:
mvn clean install
Schritt 5:
mvn sonar:sonar
BEREIT
Mein Abschnitt Plugins