问题描述
我有两个模块maven项目,在本地运行时,在index.html文件中都看不到。
但是我可以在目标文件夹(\target\coverage-reports\jacoco
)下看到这两个模块包。
下面是我的主要POM。
<profile>
<id>coverage</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<run.profiles>test</run.profiles>
<skipTests>false</skipTests>
<checkstyle.skip>true</checkstyle.skip>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>${argLine}</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<configuration>
<destFile>${user.dir}/target/jacoco/${project.artifactId}.exec</destFile>
<excludes>
<exclude>**/*ApP*</exclude>
<exclude>**/test/**/*</exclude>
<exclude>**/it/**/*</exclude>
<exclude>**/*Config*</exclude>
<exclude>**/configuration/*</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>agent-for-ut</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>${user.dir}/target/jacoco/${project.artifactId}.exec</dataFile>
<outputDirectory>${user.dir}/target/coverage-reports/jacoco</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
我在单独的POM中进行了jacoco合并
<artifactId>jacoco-merge</artifactId>
<name>jacoco-m
erge</name>
<packaging>pom</packaging>
<profiles>
<profile>
<id>coverage</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<!-- merge separate coverage files into single coverage file -->
<execution>
<id>merge-results</id>
<goals>
<goal>merge</goal>
</goals>
<configuration>
<!-- This where the jenkins jacoco plugin expects the merged result -->
<destFile>${user.dir}/target/jacoco.exec</destFile>
<fileSets>
<fileSet>
<!-- This is where the individual builds put results -->
<directory>${user.dir}/target/jacoco</directory>
<includes>
<include>*.exec</include>
</includes>
</fileSet>
</fileSets>
</configuration>
<phase>test</phase>
</execution>
解决方法
找出问题所在
由于我使用相同的共享位置放置生成的报告,因此它将用最新报告覆盖前一个报告。 因为正在使用模块特定的数据文件生成报告,然后在最后生成报告。
因此将报告存储在模块内部即可解决该问题。
更改输出目录的下一行
<outputDirectory>${user.dir}/${project.artifactId}/target/coverage-reports/jacoco</outputDirectory>