sbt依赖性忽略版本

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

在我的build.sbt文件中,我声明我想从一个库中使用18.9版本。

val finagleVersion = "18.9.0"
<zip>
lazy val commonDependencies = Seq(
  <zip>,
  "com.twitter" %% "finagle-core" % finagleVersion,

但当我用sbt运行时,这似乎被忽略了

scalacOptions ++= (compilerOptions :+ "-Ylog-classpath"),

它输出了编译时使用的所有jar。在这里,我看到每一个finagle的依赖,包括core,都使用了19.3版本。

C:\Users\<me>\.coursier\cache\v1\https\<me>%40<company repo>\artifactory\Central-cache\com\twitter\finagle-core_2.12\19.3.0\finagle-core_2.12-19.3.0.jar

这种对最新版本的 "偏好 "是怎么来的?

scala sbt coursier
1个回答
1
投票

在使用 evicted 并看到哪个库覆盖了你想要的版本,你可以选择使用 依赖性Overrides. 例如,你必须小心,因为依赖Finagle的库也可能需要新的版本,如果你使用旧的版本就会损坏。

dependencyOverrides += "com.twitter" %% "finagle-core" % "18.9.0"

你必须要小心,因为依赖Finagle的库也可能需要新的版本,如果你使用旧版本就会崩溃。这就是为什么你真的应该先检查哪个库在驱逐旧版本,并验证是否可以这样做。

另外很重要的一点是,这是一个livy-only的功能,所以覆盖不会出现在发布的pom.xml中。

© www.soinside.com 2019 - 2024. All rights reserved.