sbt 测试范围包括运行时?
sbt Test scope includes Runtime?
我正在 SBT 应用程序中配置 SLF4J,测试与运行时范围的工作方式与我预期的不同。
我想要的设置:
- tests(sbt测试):使用
slf4-simple
作为实现
- bundle/production运行时间(sbt运行):使用
log4j-slf4j-impl
相关 build.sbt
(sbt 0.13) 部分:
libraryDependencies += "org.slf4j" % "slf4j-simple" % "1.7.25" % Test,
libraryDependencies += "org.apache.logging.log4j" % "log4j-api" % 2.8.2 % Runtime,
libraryDependencies += "org.apache.logging.log4j" % "log4j-core" % 2.8.2 % Runtime,
libraryDependencies += "org.apache.logging.log4j" % "log4j-slf4j-impl" % 2.8.2 % Runtime
我得到的错误是存在两个 slf4j 绑定,一个是 log4j 绑定,另一个是简单绑定。
我想知道如何从测试范围中排除运行时依赖项,或者这是否是错误的方法。
提炼问题:我想在 运行time 与测试时使用几个不同的 jar,它们是互斥的。这如何在 sbt 0.13 中完成?
问题是测试范围包括编译和可能的运行时。因此,您在运行时添加的任何内容也会添加到测试中。
您可以像这样尝试从测试类路径中排除 log4j-slf4j-impl
:
fullClasspath.in(Test) := fullClasspath.in(Test).value.filterNot(_.data.getName.contains("log4j-slf4j-impl"))
我正在 SBT 应用程序中配置 SLF4J,测试与运行时范围的工作方式与我预期的不同。
我想要的设置:
- tests(sbt测试):使用
slf4-simple
作为实现 - bundle/production运行时间(sbt运行):使用
log4j-slf4j-impl
相关 build.sbt
(sbt 0.13) 部分:
libraryDependencies += "org.slf4j" % "slf4j-simple" % "1.7.25" % Test,
libraryDependencies += "org.apache.logging.log4j" % "log4j-api" % 2.8.2 % Runtime,
libraryDependencies += "org.apache.logging.log4j" % "log4j-core" % 2.8.2 % Runtime,
libraryDependencies += "org.apache.logging.log4j" % "log4j-slf4j-impl" % 2.8.2 % Runtime
我得到的错误是存在两个 slf4j 绑定,一个是 log4j 绑定,另一个是简单绑定。
我想知道如何从测试范围中排除运行时依赖项,或者这是否是错误的方法。
提炼问题:我想在 运行time 与测试时使用几个不同的 jar,它们是互斥的。这如何在 sbt 0.13 中完成?
问题是测试范围包括编译和可能的运行时。因此,您在运行时添加的任何内容也会添加到测试中。
您可以像这样尝试从测试类路径中排除 log4j-slf4j-impl
:
fullClasspath.in(Test) := fullClasspath.in(Test).value.filterNot(_.data.getName.contains("log4j-slf4j-impl"))