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.