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

添加-Xshare:off参数导致Jacoco-Maven-Plugin失效问题咨询

Maven+Mockito+Java 17测试:消除JVM警告同时保留Jacoco覆盖率报告

问题背景

使用Maven 3.9.2结合Mockito执行Java 17单元测试时,出现以下JVM警告:

OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

添加JVM参数-Xshare:off可消除该警告,但导致Jacoco无法生成执行数据文件,控制台提示:

[INFO] --- jacoco:0.8.11:report (report-unit-tests) @ commons-test ---
[INFO] Skipping JaCoCo execution due to missing execution data file.


问题解答

1. 为何添加-Xshare:off后Jacoco无法生成执行数据文件?

Jacoco的prepare-agent目标会自动向Maven Surefire/Failsafe插件的argLine参数中追加JavaAgent配置(格式为-javaagent:/path/to/jacocoagent.jar=destfile=target/jacoco.exec),用于收集测试执行数据。

但你在Surefire和Failsafe插件的配置中直接硬编码了argLine参数的值,完全覆盖了Jacoco自动追加的Agent配置。这导致Jacoco Agent未被加载,自然无法生成执行数据文件(jacoco.exec),最终报告阶段因缺少数据而跳过执行。

2. 如何在消除警告的同时正常生成覆盖率报告?

核心是保留Jacoco自动注入的Agent配置,同时添加-Xshare:off参数。修改Surefire和Failsafe插件的argLine配置,使用@{argLine}占位符引用Jacoco生成的参数,再追加-Xshare:off:

修改后的maven-surefire-plugin配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.2.1</version>
    <configuration>
        <argLine>@{argLine} -Xshare:off</argLine>
        <parallel>all</parallel>
    </configuration>
</plugin>

修改后的maven-failsafe-plugin配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>3.2.1</version>
    <configuration>
        <argLine>@{argLine} -Xshare:off</argLine>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

验证方式:

执行mvn clean test命令后,检查模块的target目录下是否生成jacoco.exec文件;再执行mvn jacoco:report,确认覆盖率报告正常生成(默认路径为target/site/jacoco/index.html)。

对于多模块项目,确保父模块的插件配置正确被子模块继承,或在子模块中同步上述修改即可。


内容的提问来源于stack exchange,提问作者Loïc DUBOIS-TERMOZ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:15:00