2016-10-30 3 views
0

Für meine kleine Java/Maven Anwendung, ich bin mit JaCoCo in meinem pom.xml wie unter:JaCoCo Report Format

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.jacoco</groupId> 
     <artifactId>jacoco-maven-plugin</artifactId> 
     <version>0.7.6.201602180812</version> 
     <configuration> 
     <destFile>${basedir}/target/coverage-reports/jacoco.exec</destFile> 
     </configuration> 
     <executions> 
     <execution> 
      <goals> 
      <goal>prepare-agent</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>report</id> 
      <phase>package</phase> 
      <goals> 
      <goal>report</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

Solange ich den <destFile> Parameter nicht, die Standardberichte in target/site/jacoco Ordner sind korrekt im XML-, CSV- und HTML-Format generiert. Aber wenn ich das Element <destFile> verwende, um den Standardordner zu ändern, in dem die Berichte generiert werden, wird nur die Datei jacoco.exec generiert und nichts anderes. Wie kann ich den Berichtsordner ändern und die Berichte in den Formaten csv, xml und html abrufen?

Antwort

0

Mit dem Parameter destFile haben Sie den Speicherort geändert, an dem das Ziel prepare-agent die Ausführungsdatendatei schreibt. Standardmäßig ist dies ${project.build.directory}/jacoco.exec, was bedeutet (immer noch standardmäßig) target/jacoco.exec. Das Ziel report erwartet jedoch, dass der Pfad zur Ausführungsdatei im Parameter dataFile übergeben wird, der natürlich ${project.build.directory}/jacoco.exec lautet, damit sie synchron sind. Wenn Sie den Pfad zu dieser Ausführungsdatei ändern möchten, müssen Sie daher diese beiden Parameter zuordnen. Um den Weg nicht zu duplizieren, können Sie eine Maven-Eigenschaft verwenden, das zu tun:

<properties> 
    <jacoco.execution.file>${project.build.directory}/coverage-reports/jacoco.exec</jacoco.execution.file> 
</properties> 
<build> 
    <plugins> 
    <plugin> 
     <groupId>org.jacoco</groupId> 
     <artifactId>jacoco-maven-plugin</artifactId> 
     <version>0.7.7.201606060606</version> 
     <configuration> 
     <destFile>${jacoco.execution.file}</destFile> 
     <dataFile>${jacoco.execution.file}</dataFile> 
     </configuration> 
     <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> 
</build> 

Beachten Sie, dass dies das Ausgabeverzeichnis des JaCoCo berichtet wird sich nicht ändern; Dies ändert nur den Pfad zur ausführbaren Datei. Dazu können Sie den Parameter outputDirectory verwenden:

Ausgabeverzeichnis für die Berichte. Beachten Sie, dass dieser Parameter nur relevant ist, wenn das Ziel über die Befehlszeile oder vom standardmäßigen Build-Lebenszyklus ausgeführt wird. Wenn das Ziel indirekt als Teil einer Site-Generierung ausgeführt wird, wird stattdessen das im Maven-Site-Plugin konfigurierte Ausgabeverzeichnis verwendet.

und haben folgendes Konfigurationselement hinzugefügt:

<configuration> 
    <!-- rest of your JaCoCo configuration --> 
    <outputDirectory>${project.build.directory}/coverage-reports/jacoco</outputDirectory> 
</configuration> 

Diese sicher, dass alle HTML machen, XML und CSV-Berichte werden unter target/coverage-reports/jacoco erzeugt. Beachten Sie, dass diese Konfiguration beim Starten von mvn site nicht als Teil der Maven Site-Generation verwendet wird. Während der Site-Generierung müssen Sie stattdessen die outputDirectory der maven-site-plugin konfigurieren.

+0

Vielen Dank nochmal :) – user1107888