2017-02-25 1 views
0

Ich habe eine große Multi-Modul Maven Build, derzeit mit einer Mischung aus PowerMock und Mockito Tests (bald alle PowerMock-Tests nach Mockito verschieben). Die standardmäßige jacoco-maven-plugin-Konfiguration im Eltern-Pom dient der "Offline" -Instrumentierung, aber das eine Modul mit Mockito-Tests verwendet Online-Instrumentierung. Ich glaube, dass jede der jacoco.exec-Dateien in den Modulen korrekt erstellt wird.jacoco: Bericht-Aggregat wird entweder flach oder gar nicht

Eines der untergeordneten Module, "jacoco-aggregate" genannt, versucht nur die Ziele "Zusammenführen" und "Bericht-Aggregieren" zu verwenden. Ich verwende "merge", weil ich mit SonarQube arbeite, und die Version, die wir verwenden, erlaubt nur eine einzige Exec-Datei. Von der Ausgabe, die ich sehen kann, scheint das "Merge" -Ziel korrekt zu funktionieren.

Das Ziel "Bericht-Aggregat" scheint ein Problem zu haben. Es erzeugt derzeit überhaupt keine Berichterstattung. Die angezeigte Tabelle ist leer.

Hier finden Sie die aktuelle Ausgabe I erhalten, wenn sie im jacoco Kind Modul Gebäude selbst:

[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ jacoco-aggregate --- 
[INFO] Deleting <myhome>\git\oce_usl\usl-parent\jacoco-aggregate\target 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (filter) @ jacoco-aggregate --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory <myhome>\git\oce_usl\usl-parent\jacoco-aggregate\src\main\resources 
[INFO] 
[INFO] --- depends-maven-plugin:1.2:generate-depends-file (generate-depends-file) @ jacoco-aggregate --- 
[INFO] Created: <myhome>\git\oce_usl\usl-parent\jacoco-aggregate\target\classes\META-INF\maven\dependencies.properties 
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.8:report (default-report) @ jacoco-aggregate --- 
[INFO] Skipping JaCoCo execution due to missing execution data file. 
[INFO] 
[INFO] --- maven-javadoc-plugin:2.10.4:jar (module-javadoc-jar) @ jacoco-aggregate --- 
[INFO] Not executing Javadoc as the project is not a Java classpath-capable package 
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.8:report-aggregate (report-aggregate) @ jacoco-aggregate --- 
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.8:merge (merge) @ jacoco-aggregate --- 
[INFO] Loading execution data file <myhome>\git\oce_usl\usl-parent\jacoco-aggregate\..\usl-account-impl\target\jacoco.exec 
[INFO] Loading execution data file <myhome>\git\oce_usl\usl-parent\jacoco-aggregate\..\usl-core-impl\target\jacoco.exec 
[INFO] Loading execution data file <myhome>\git\oce_usl\usl-parent\jacoco-aggregate\..\usl-creditcheck-impl\target\jacoco.exec 
[INFO] Loading execution data file <myhome>\git\oce_usl\usl-parent\jacoco-aggregate\..\usl-ordercreation-impl\target\jacoco.exec 
[INFO] Loading execution data file <myhome>\git\oce_usl\usl-parent\jacoco-aggregate\..\usl-payment-impl\target\jacoco.exec 
[INFO] Loading execution data file <myhome>\git\oce_usl\usl-parent\jacoco-aggregate\..\usl-productandoffer-impl\target\jacoco.exec 
[INFO] Writing merged execution data to <myhome>\git\oce_usl\usl-parent\jacoco-aggregate\target\jacoco.exec 
[INFO] 

Der folgende Text ist ein Auszug aus dem "jacoco-Aggregat" pom:

<artifactId>jacoco-aggregate</artifactId> 
<version>2.3.0-SNAPSHOT</version> 
<name>jacoco-aggregate</name> 
<packaging>pom</packaging> 
<dependencies> 
    <dependency> 
     <groupId>com.att.detsusl</groupId> 
     <artifactId>usl-account-impl</artifactId> 
     <version>2.3.0-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.att.detsusl</groupId> 
     <artifactId>usl-core-impl</artifactId> 
     <version>2.3.0-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.att.detsusl</groupId> 
     <artifactId>usl-creditcheck-impl</artifactId> 
     <version>2.3.0-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.att.detsusl</groupId> 
     <artifactId>usl-csi-jaxb-base</artifactId> 
     <version>2.3.0-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.att.detsusl</groupId> 
     <artifactId>usl-ordercreation-impl</artifactId> 
     <version>2.3.0-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.att.detsusl</groupId> 
     <artifactId>usl-payment-impl</artifactId> 
     <version>2.3.0-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.att.detsusl</groupId> 
     <artifactId>usl-productandoffer-impl</artifactId> 
     <version>2.3.0-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.att.detsusl</groupId> 
     <artifactId>usl-servicefactory-impl</artifactId> 
     <version>2.3.0-SNAPSHOT</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
    <groupId>com.att.detsusl</groupId> 
    <artifactId>usl-csi-icas-impl</artifactId> 
    <version>2.3.0-SNAPSHOT</version> 
    <scope>compile</scope> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.7.8</version> 
      <executions> 
       <execution> 
        <id>report-aggregate</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>report-aggregate</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>merge</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>merge</goal> 
        </goals> 
        <configuration> 
         <fileSets> 
          <fileSet> 
           <directory>${project.basedir}/../usl-account-impl/target</directory> 
           <includes> 
           <include>*.exec</include> 
           </includes> 
          </fileSet> 
          <fileSet> 
           <directory>${project.basedir}/../usl-core-impl/target</directory> 
           <includes> 
           <include>*.exec</include> 
           </includes> 
          </fileSet> 
          <fileSet> 
           <directory>${project.basedir}/../usl-creditcheck-impl/target</directory> 
           <includes> 
           <include>*.exec</include> 
           </includes> 
          </fileSet> 
          <fileSet> 
           <directory>${project.basedir}/../usl-csi-jaxb-base/target</directory> 
           <includes> 
           <include>*.exec</include> 
           </includes> 
          </fileSet> 
          <fileSet> 
           <directory>${project.basedir}/../usl-ordercreation-impl/target</directory> 
           <includes> 
           <include>*.exec</include> 
           </includes> 
          </fileSet> 
          <fileSet> 
           <directory>${project.basedir}/../usl-payment-impl/target</directory> 
           <includes> 
           <include>*.exec</include> 
           </includes> 
          </fileSet> 
          <fileSet> 
           <directory>${project.basedir}/../usl-productandoffer-impl/target</directory> 
           <includes> 
           <include>*.exec</include> 
           </includes> 
          </fileSet> 
          <fileSet> 
           <directory>${project.basedir}/../usl-servicefactory-impl/target</directory> 
           <includes> 
           <include>*.exec</include> 
           </includes> 
          </fileSet> 
         </fileSets> 
        </configuration> 
       </execution> 
       <execution> 
        <id>prepare-agent</id> 
        <phase>none</phase> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>default-instrument</id> 
        <phase>none</phase> 
        <goals> 
         <goal>instrument</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>default-restore-instrumented-classes</id> 
        <phase>none</phase> 
        <goals> 
         <goal>restore-instrumented-classes</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>report</id> 
        <phase>none</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 

Hinweis dass ich Ausführungen für andere jacoco-Ziele spezifiziere, da diese im Eltern-POM angegeben sind, von denen erwartet wird, dass sie von gewöhnlichen Codemodulen verwendet werden. Das Setzen der "Phase" auf "keine" ist eine Möglichkeit, dieses Ziel effektiv zu deaktivieren (nicht, dass es besonders sauber ist).

Bevor ich den Build manuell in "jacoco-aggregate" ausführen, habe ich mir die verschiedenen "jacoco.exec" -Dateien angesehen, auf die in den anderen Modulen verwiesen wird, und alle existieren und sind nicht leer.

Antwort

1

Zuerst - scheint, dass Sie merge nach report-aggregate tun, so dass letzte nicht jacoco.exec sehen.

Beachten Sie auch, dass report-aggregate in den Reaktor Projekte sieht, das heißt, wenn Sie

root 
    \child_1 
    \child_2 

dann während der Ausführung von mvn ... in root Reaktor haben alle 3 enthalten, während bei der Ausführung von cd child_2 && mvn ... Reaktor nur child_2 enthalten wird.

Verwandte Themen