Gradle 4.10.3升级至6.8无法创建SpotBugsTask任务如何解决
报错原因分析
该报错的核心诱因是SpotBugs Gradle插件版本与Gradle 6.8不兼容,与报错末尾提示的Gradle 7.0兼容警告无直接关联:
- Gradle从5.1版本开始调整了内部
TaskReportContainer类的构造函数签名,低版本SpotBugs插件仍在调用已被移除的旧版构造方法,因此初始化SpotBugsReportsImpl实例时触发了方法不存在的异常,对应报错栈最底层的NoSuchMethodError日志。 - 原项目适配Gradle 4.10.3使用的SpotBugs插件未适配Gradle 5.x及以上版本的API变更,升级Gradle 6.8后直接触发兼容错误。
修复方案
- 升级SpotBugs Gradle插件至4.7.0及以上版本,推荐使用适配Gradle 6.x的稳定版4.8.0:
若使用plugins块声明插件,直接修改版本号:
若使用buildscript依赖方式引入插件,修改对应依赖的版本号:plugins { id 'com.github.spotbugs' version '4.8.0' }buildscript { dependencies { classpath "com.github.spotbugs:spotbugs-gradle-plugin:4.8.0" } } - 无需单独调整SpotBugs核心工具版本,保持与插件配套的默认版本即可,避免出现额外兼容问题。
- 若
quality.gradle文件中存在自定义SpotBugs报告配置,可同步调整为新版本规范写法:spotbugsMain { reports { xml.required.set(true) html.required.set(false) } } - 配置修改完成后执行
gradle clean build即可正常构建。
内容的提问来源于stack exchange,提问作者Ekaterina Ivanova iceja.net
相关产品推荐
相关产品推荐

