You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 20:35:29