在我的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
这种对最新版本的 "偏好 "是怎么来的?
在使用 evicted
并看到哪个库覆盖了你想要的版本,你可以选择使用 依赖性Overrides. 例如,你必须小心,因为依赖Finagle的库也可能需要新的版本,如果你使用旧的版本就会损坏。
dependencyOverrides += "com.twitter" %% "finagle-core" % "18.9.0"
你必须要小心,因为依赖Finagle的库也可能需要新的版本,如果你使用旧版本就会崩溃。这就是为什么你真的应该先检查哪个库在驱逐旧版本,并验证是否可以这样做。
另外很重要的一点是,这是一个livy-only的功能,所以覆盖不会出现在发布的pom.xml中。