我有一个在 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 社区帮助我解决了这个问题。感谢他们!