SBT 依赖项作用域中的覆盖似乎无法按预期工作



我想在测试范围内有一个不同版本的库。

我希望项目描述符的简化版本看起来像这样。 请注意,这是一个简化的视图,在我的真实项目中,它更加复杂。我需要使用dependencyOverrides来强制执行某些库版本。

import sbt._, Keys._
organization :=  "me"
name := "test"
version := "0.1"
libraryDependencies := Seq("ch.qos.logback" % "logback-classic" % "1.2.3")
dependencyOverrides := Seq(
"ch.qos.logback" % "logback-classic" % "1.2.2"
)
dependencyOverrides in Test := Seq(
"ch.qos.logback" % "logback-classic" % "1.2.1"
)

我希望在运行时看到logback-classic版本1.2.1show test:managedClasspath. 相反logback-classic我得到了1.2.2版本,就好像dependencyOverrides in Test被忽略了一样。

同时,当我运行show Test/dependencyOverrides我得到预期的结果是:

ch.qos.logback:logback-classic:1.2.1

有没有人知道我在Test范围内dependencyOverridesmanagedClasspath之间的关系中缺少什么?

看来问题无法按照我想象的方式解决。主要原因是libraryDependenciesupdate的范围不限于配置。

我认为最好的解决方案是以防我在某些测试中需要不同版本的库,以将这些测试提取到具有独立libraryDependencies集的单独模块中。

最新更新