我在SBT应用程序中配置SLF4J,测试与运行时范围的工作方式与我预期的不同。
我想要的设置:
slf4-simple
作为实现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一个和简单。
我想知道如何从测试范围中排除运行时依赖项,或者这是否是错误的方法。
提炼问题:我想在运行时与测试中使用几个不同的罐子,这些罐子是相互排斥的。如何在sbt 0.13中完成?
答案 0 :(得分:1)
问题是测试范围包括编译和推测运行时。因此,您在Runtime中添加的任何内容也会在Test中添加。
您可以尝试从Test类路径中排除log4j-slf4j-impl
,如下所示:
fullClasspath.in(Test) := fullClasspath.in(Test).value.filterNot(_.data.getName.contains("log4j-slf4j-impl"))