在Gradle中,从除一个依赖项之外的所有依赖项中排除可传递依赖项

在Gradle中,从除一个依赖项之外的所有依赖项中排除可传递依赖项,gradle,dependencies,Gradle,Dependencies,我正在尝试使用JUnit和测试记录器的行为,这是“SLF4J的测试实现,它将日志消息存储在内存中并提供检索它们的方法” 从SLF4J测试文档: SLF4J测试应该是测试中唯一的SLF4J实现 类路径 我有一些依赖项将SLF4J作为可传递依赖项。我正在尝试从测试配置中的所有依赖项中排除SLF4J,但对于SLF4J测试,我仍然需要它 我可以用下面的代码将SLF4J从所有内容中排除,但这显然也将它从SLF4J测试中排除,我需要它 configurations { testCompile.exc

我正在尝试使用JUnit和测试记录器的行为,这是“SLF4J的测试实现,它将日志消息存储在内存中并提供检索它们的方法”

从SLF4J测试文档:

SLF4J测试应该是测试中唯一的SLF4J实现 类路径

我有一些依赖项将SLF4J作为可传递依赖项。我正在尝试从测试配置中的所有依赖项中排除SLF4J,但对于SLF4J测试,我仍然需要它

我可以用下面的代码将SLF4J从所有内容中排除,但这显然也将它从SLF4J测试中排除,我需要它

configurations {
    testCompile.exclude group: "org.slf4j"
}
由于SLF4J是我的许多其他依赖项(包括Spring Boot)的一个可传递依赖项,因此不可能(或可能?)将其从所有依赖项中单独排除


是否有一种(相对轻松的)方法可以将可传递依赖项从所有依赖项中排除,但需要它的依赖项除外?

SLF4J测试指南说,您的测试类路径上应该只有一个SLF4J实现。这意味着您应该只在当前项目中添加
slf4j测试
依赖项,并排除其他依赖项(如logback、log4j等)

例如,Spring Boot默认使用Logback,下面是一段gradle脚本,描述了如何使用
slf4j测试

configurations.testCompile{
排除组:“ch.qos.logback”,模块:“logback classic”
}
依赖关系{
编译(组:'org.springframework.boot',名称:'springbootstarter')
...
testCompile(组:'org.springframework.boot',名称:'springbootstartertest')
testCompile(组:“com.github.valfirst”,名称:“slf4j测试”,版本:“1.3.0”)
}