2016-05-19 9 views
0

Ich habe eine Maven-Multimodul-Projekt und ich verwende die Beispielkonfiguration für jacoco von der Website, um Code-Coverage-Berichte zu erstellen: (http://eclemma.org/jacoco/trunk/doc/examples/build/pom.xml)Jacoco Bericht für Maven Multimodul Projekt

So sieht mein pom wie folgt aus:

<?xml version="1.0" encoding="UTF-8"?> 
<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> 
    <groupId>com.dti</groupId> 
    <artifactId>dti-parent</artifactId> 
    <version>1.0.1</version> 
</parent> 
<groupId>com.dti.myproject</groupId> 
<artifactId>myproject-build-all</artifactId> 
<version>6.5.0.0-SNAPSHOT</version> 
<packaging>pom</packaging> 
<name>myproject</name> 
<modules> 
    <module>../myproject-config</module> 
    <module>../myproject-messages</module> 
    <module>../myproject-persistence</module> 
    <module>../myproject-resources</module> 
    <module>../myproject-service</module> 
</modules> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.7.7-SNAPSHOT</version> 
      <executions> 
       <execution> 
        <id>default-prepare-agent</id> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>default-report</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>default-check</id> 
        <goals> 
         <goal>check</goal> 
        </goals> 
        <configuration> 
         <rules> 
          <!-- implementation is needed only for Maven 2 --> 
          <rule implementation="org.jacoco.maven.RuleConfiguration"> 
           <element>BUNDLE</element> 
           <limits> 
            <!-- implementation is needed only for Maven 2 --> 
            <limit implementation="org.jacoco.report.check.Limit"> 
             <counter>COMPLEXITY</counter> 
             <value>COVEREDRATIO</value> 
             <minimum>0.0</minimum> 
            </limit> 
           </limits> 
          </rule> 
         </rules> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
</project> 

Wenn ich mvn: test ausführen, werden die todsicheren Berichte innerhalb der Module generiert und sie sehen gut aus. Allerdings, wenn ich mvn laufen: überprüfen, jacoco erstellen keinen Bericht und die Ausgabe der Konsole angezeigt:

[INFO] --- jacoco-maven-plugin:0.7.7-SNAPSHOT:report (default-report) @ myproject-build-all --- 
[INFO] Skipping JaCoCo execution due to missing execution data file. 
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.7-SNAPSHOT:check (default-check) @ myproject-build-all --- 
[INFO] Skipping JaCoCo execution due to missing execution data file:C:\workspaces\release-trunk\myproject-build-all\target\jacoco.exec 

Weiß jemand, wie man diesen Fehler zu beheben?

Antwort

1
  1. ändern jacoco Berichtsausführung <phase>prepare-package</phase> zu <phase>test</phase> um mvn: Test den jacoco Bericht (und nicht nur den todsicheren Bericht) zu erzeugen.
  2. einen Eigenschaftsnamen In den jacoco prepare-Agent Ausführung
<execution> 
    <id>default-prepare-agent</id> 
    <goals> 
     <goal>prepare-agent</goal> 
    </goals> 
    <configuration> 
     <propertyName>jacoco.agent.ut.arg</propertyName> 
    </configuration> 
</execution> 
  1. todsichere deklarieren (als Build) Plugin und fügen jacoco.agent.ut.arg als argline:
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
     <argLine>${jacoco.agent.ut.arg}</argLine> 
    </configuration> 
</plugin> 
  1. vermeiden Sie mvn: überprüfen Ziel, wenn Sie irgendwelche Integrationstests nicht haben. Falls Sie Integrationstests haben, sollten Sie sie mit Failsafe Plugin (http://maven.apache.org/surefire/maven-failsafe-plugin/) und nicht mit todsichere ausführen. Außerdem wird empfohlen, getrennte Jacoco-Ausführungsziele für Komponententests und Integrationstests (http://www.petrikainulainen.net/programming/maven/creating-code-coverage-reports-for-unit-and-integration-tests-with-the-jacoco-maven-plugin/)
zu haben