Gradle 8.x升级:如何解决JUnitXmlReport.getDestination()报错问题
解决方案
问题根源
你遇到的报错核心原因是Jacoco插件版本(0.8.8)与Gradle 8.x不兼容——旧版Jacoco插件底层会调用Gradle 8.x中已被移除的JUnitXmlReport.getDestination()方法,虽然你的配置里没有直接引用该API,但插件内部依赖了这个已废弃的接口。本地构建正常可能是因为缓存了兼容的依赖,或是CodeBuild环境触发了本地未执行的额外报告逻辑。
修复步骤
1. 升级Jacoco插件版本
将Jacoco的toolVersion替换为与Gradle 8.x完全兼容的版本,推荐使用0.8.12(该版本适配了Gradle 8.x的API变更):
jacoco { toolVersion = '0.8.12' } jacocoTestReport { reports { xml.required = true html.required = true } } // 其余test配置保持不变 test { useJUnitPlatform() { includeEngines 'junit-vintage' includeEngines 'spock' } finalizedBy jacocoTestReport dependsOn copyNativeDeps doFirst { systemProperty "java.library.path", 'build/libs' } }
2. 排查第三方插件冲突
如果升级Jacoco后仍报错,检查项目中是否引入了其他测试报告类第三方插件(比如自定义报告生成插件),这类插件可能也依赖了Gradle旧版测试API,需要同步升级到兼容Gradle 8.x的版本。
3. 验证CodeBuild环境一致性
确认CodeBuild构建流程中使用的Gradle版本确实是8.5,避免环境中存在多版本Gradle导致的执行逻辑不一致问题。
内容的提问来源于stack exchange,提问作者Martin Bamford
相关产品推荐
相关产品推荐

