Scala SBT 版本依赖性二进制兼容性错误 scala-xml

spa*_*rkr 8 scala sbt

我有一个在 GitHub 上托管的项目,我使用 scala-steward 来保持我的插件和依赖项最新。这在一段时间内有效,但现在使用此类自动更新却变成了一场噩梦。事情是这样的。在我的plugins.sbt中,我依赖于scoverage,它已由scala-steward更新到版本2.0.6。但是拉取请求未能通过编译阶段,我看到以下错误:

[error] (update) found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[error] 
[error]     * org.scala-lang.modules:scala-xml_2.12:2.1.0 (early-semver) is selected over {1.3.0, 1.2.0, 1.1.1, 1.0.6}
[error]         +- org.scoverage:scalac-scoverage-reporter_2.12:2.0.7 (depends on 2.1.0)
[error]         +- org.scalariform:scalariform_2.12:0.2.0             (depends on 1.0.6)
[error]         +- org.scala-lang:scala-compiler:2.12.16              (depends on 1.0.6)
[error]         +- com.typesafe.sbt:sbt-native-packager:1.5.2 (scalaVersion=2.12, sbtVersion=1.0) (depends on 1.1.1)
[error]         +- com.typesafe.play:twirl-api_2.12:1.5.1             (depends on 1.2.0)
[error]         +- com.github.sbt:sbt-native-packager:1.9.9 (sbtVersion=1.0, scalaVersion=2.12) (depends on 1.3.0)
[error] 
Run Code Online (Sandbox Code Playgroud)

首先,最好在编译时报告此类不兼容性,以避免任何运行时意外。但是,我不确定如何解决这个问题。感觉就像我遇到了障碍。

编辑:这是我的实际项目:https ://github.com/joesan/plant-simulator

spa*_*rkr 18

我必须在我的project/plugins.sbt文件中执行以下操作才能修复此错误:

ThisBuild / libraryDependencySchemes += "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always
Run Code Online (Sandbox Code Playgroud)

我还在 build.sbt 中添加了以下内容:

ThisBuild / evictionErrorLevel := Level.Info
Run Code Online (Sandbox Code Playgroud)

但我想我的 build.sbt 中不需要它。希望这对某人有帮助!Discord 的 Scala 社区帮助我解决了这个问题。感谢他们!

  • 很高兴知道更改背后的原因。 (3认同)