SBT:修复图书馆依赖性的驱逐警告是明智的吗?



修复SBT驱逐警告消息是个好主意吗?

通过将被驱逐的库的版本覆盖为最新版本。这会迫使SBT坚持终身的覆盖版本吗?SBT是否仍然会通知我们将来有较新的版本?

驱逐警告的示例(SBT 0.13.13)

[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn]  * com.chuusai:shapeless_2.11:1.2.4 -> 2.3.2
[warn]  * org.postgresql:postgresql:9.4-1201-jdbc41 -> 9.4.1208.jre7
[warn]  * jline:jline:0.9.94 -> 2.12.1
[warn] Run 'evicted' to see detailed eviction warnings

通过在build.sbt的末尾添加此警告。按照SBT文档驱逐警告中的说明

dependencyOverrides ++= Set(
  "org.postgresql" % "postgresql" % "9.4.1208.jre7",
  "com.chuusai" %% "shapeless" % "2.3.2",
  "jline" % "jline" % "2.12.1"
)

如果这些警告是针对您直接在代码中使用的依赖项,则绝对应该将升级的版本添加到libraryDependencies中。

对于被驱逐的远期依赖性(仅由您自己的依赖性直接使用的依赖项),最好将警告放置在适当的位置。这为您提供有关依赖性可能不兼容的文档,并可以帮助您调试由于这种不兼容而引起的运行时问题。

请记住,设置dependencyOverrides仅隐藏了警告,它不能保证库与您设置的版本之间的兼容性。

最新更新