Scala项目scala-xml依赖版本冲突问题求助
解决scoverage升级引发的scala-xml依赖冲突问题
问题背景
scoverage自动升级到2.0.6版本后,编译阶段出现scala-xml版本冲突:scoverage依赖scala-xml_2.12:2.1.0,但项目中其他依赖(如scala-compiler、scalariform、sbt-native-packager等)依赖更低版本的scala-xml(1.0.6~1.3.0),导致编译失败。
解决方法
方法1:强制统一scala-xml版本
scala-xml 1.x系列保持二进制向后兼容,可强制所有依赖使用一个兼容的版本(比如1.3.0,是现有依赖中最高的低版本),在build.sbt中添加:
dependencyOverrides += "org.scala-lang.modules" %% "scala-xml" % "1.3.0"
执行sbt clean update compile验证是否解决冲突。
方法2:降级scoverage到scala 2.12兼容版本
scoverage 2.x系列主要适配Scala 2.13+,Scala 2.12应使用1.4.x系列的scoverage。修改project/plugins.sbt中的scoverage版本:
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.4.11")
若不想让scala-steward继续升级该插件,在.scala-steward.conf中添加忽略规则:
updates.ignore = [ { groupId = "org.scoverage", artifactId = "sbt-scoverage" } ]
方法选择建议
- 若想保留scoverage 2.x功能,优先选方法1,利用scala-xml的兼容性快速修复。
- 若追求长期稳定性,优先选方法2,使用与Scala 2.12官方匹配的scoverage版本。
内容的提问来源于stack exchange,提问作者joesan
相关产品推荐
相关产品推荐

