我想在测试范围内有一个不同版本的库。
我希望项目描述符的简化版本看起来像这样。 请注意,这是一个简化的视图,在我的真实项目中,它更加复杂。我需要使用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.1
:show test:managedClasspath
. 相反logback-classic
我得到了1.2.2
版本,就好像dependencyOverrides in Test
被忽略了一样。
同时,当我运行show Test/dependencyOverrides
我得到预期的结果是:
ch.qos.logback:logback-classic:1.2.1
有没有人知道我在Test
范围内dependencyOverrides
与managedClasspath
之间的关系中缺少什么?
看来问题无法按照我想象的方式解决。主要原因是libraryDependencies
,update
的范围不限于配置。
我认为最好的解决方案是以防我在某些测试中需要不同版本的库,以将这些测试提取到具有独立libraryDependencies
集的单独模块中。