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

问题描述 投票:0回答:2

我在 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] 

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

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

scala sbt
2个回答
11
投票

我必须在我的

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

ThisBuild / libraryDependencySchemes += "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always

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

ThisBuild / evictionErrorLevel := Level.Info

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


0
投票

在我的例子中,我通过将 akka-http 版本从 10.5.0 降低到 10.4.0 以及 akka 2.7.0 来“修复”它。我也用

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.16")

相对不清楚,但我们可以在错误堆栈中看到

com.typesafe.play:twirl-api
,而且我们还可以看到
scala-xml:2.1.0
作为
akka-http-xml:10.5.0

的子依赖项
© www.soinside.com 2019 - 2024. All rights reserved.