Scala 2.12迁移至2.13遭遇scala-parser-combinators跨版本冲突
解决Scala 2.13迁移中scala-parser-combinators跨版本冲突问题
问题原因
这个错误是因为项目中同时引入了Scala 2.12和2.13版本的scala-parser-combinators依赖,SBT的依赖冲突检测机制会阻止这种跨版本依赖共存,避免潜在的兼容性问题。
解决方案
1. 确认项目Scala版本配置正确
先确保build.sbt中指定了正确的Scala 2.13版本:
scalaVersion := "2.13.12" // 可替换为其他2.13.x稳定版本
2. 排查依赖树定位冲突源
执行SBT命令查看完整依赖树,找出哪个模块间接引入了2.12版本的依赖:
sbt dependencyTree | grep scala-parser-combinators
输出会显示所有引用该依赖的模块(包括直接和间接依赖),能帮你定位到强制拉取2.12版本的来源。
3. 强制统一依赖版本
在build.sbt中添加dependencyOverrides,强制SBT使用Scala 2.13版本的scala-parser-combinators:
// 方式1:自动匹配当前项目的Scala版本 dependencyOverrides += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2" // 方式2:显式指定2.13版本 dependencyOverrides += "org.scala-lang.modules" % "scala-parser-combinators_2.13" % "1.1.2"
这个配置会覆盖所有模块对该依赖的版本声明,确保全局使用同一版本。
4. 清理缓存并重新加载依赖
执行以下命令清除旧缓存,重新拉取正确版本的依赖:
sbt clean reload update
内容的提问来源于stack exchange,提问作者Ayon
相关产品推荐
相关产品推荐

