SpringBoot结合Jacoco插件:Maven构建时打印代码覆盖率成功率
实现Maven构建中打印代码覆盖率成功率
当前应用仅在代码覆盖率未达预期时打印“Rule violation(规则违反)”信息,我希望在Maven构建过程中主动打印代码覆盖率的成功率。
我尝试添加了以下配置代码:
<version>3.0.0</version> <!-- 按需更新版本 --> <configuration> <argLine>${argLine}</argLine> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.0.0</version> <!-- 按需更新版本 --> <executions> <execution> <id>print-coverage</id> <phase>verify</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>echo</executable> <arguments> <argument>"Code Coverage Ratio: ${jacoco.line.covered}/${jacoco.line.total}"</argument> </arguments> </configuration> </execution> </executions> </plugin>
要实现这个需求,核心是确保Jacoco插件先生成覆盖率数据,再通过exec插件读取并打印相关变量。以下是完整的可行配置:
<build> <plugins> <!-- Jacoco 代码覆盖率核心插件 --> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.10</version> <!-- 使用最新稳定版本 --> <executions> <!-- 为测试准备代理,收集覆盖率数据 --> <execution> <id>jacoco-prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> <configuration> <argLine>${argLine}</argLine> </configuration> </execution> <!-- 生成覆盖率报告,同时暴露覆盖率变量 --> <execution> <id>jacoco-report</id> <phase>verify</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> <!-- 打印覆盖率信息的执行插件 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <!-- 使用最新稳定版本 --> <executions> <execution> <id>print-coverage</id> <!-- 确保在Jacoco生成报告后执行,避免变量未初始化 --> <phase>post-integration-test</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>echo</executable> <arguments> <argument>代码覆盖率:${jacoco.line.covered}/${jacoco.line.total}(占比${jacoco.line.coverage}%)</argument> </arguments> </configuration> </execution> </executions> </plugin> </plugins> </build>
关键注意点:
- 必须先配置Jacoco的
prepare-agent和report阶段,否则${jacoco.line.covered}等变量无法生成。 - 调整exec插件的执行阶段为
post-integration-test,确保在Jacoco报告生成后再打印信息。 - 直接使用
${jacoco.line.coverage}可以输出百分比形式的覆盖率,结果更直观。
执行命令mvn clean verify,就能在构建日志中看到打印的代码覆盖率信息了。
内容的提问来源于stack exchange,提问作者Smita Kumari
相关产品推荐
相关产品推荐

