SBT构建中sbt-scoverage版本匹配错误问题咨询及修复
问题原因分析
你看到的sbt-scoverage_2.12_1.0是sbt插件的标准命名格式,并非要找2.12.17_2.0.7,具体原因如下:
- sbt插件的artifactId会自动拼接Scala二进制版本(你项目用的Scala 2.12.x的二进制版本为
2.12)和sbt二进制版本(sbt 1.7.x的二进制版本为1.0),所以最终要解析的依赖是sbt-scoverage_2.12_1.0:2.0.7。 - 构建失败的核心是:
sbt-scoverage 2.0.7并未发布对应sbt 1.0 + Scala 2.12组合的包到公共仓库,导致依赖无法找到。
修复方案
方案1:升级sbt-scoverage到兼容版本
修改project/plugins.sbt中的插件版本为支持sbt 1.0 + Scala 2.12的稳定版本,示例:
// For code coverage test addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.9")
该版本完全兼容sbt 1.7.x和Scala 2.12.x,且已正常发布到公共仓库。
方案2:显式添加sbt插件仓库(可选)
如果升级后仍出现解析问题,在project/plugins.sbt开头添加sbt官方插件仓库,确保sbt能正确检索插件包:
resolvers += Resolver.sbtPluginRepo("releases") // For code coverage test addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.9")
方案3:调整项目sbt/Scala版本(不推荐)
若坚持使用2.10.7版本插件,需将项目的sbt或Scala版本调整至该插件支持的范围,但此方式可能引入其他兼容性问题,不建议采用。
内容的提问来源于stack exchange,提问作者joesan
相关产品推荐
相关产品推荐

