在Gradle中,从除

时间:2017-11-27 23:43:00

标签: gradle dependencies

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

来自SLF4J测试文档:

  

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

我有一些依赖项将SLF4J作为传递依赖项。我试图从我的测试配置中的所有依赖项中排除SLF4J,但我仍然需要 SLF4J测试

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

configurations {
    testCompile.exclude group: "org.slf4j"
}

由于SLF4J是我的许多其他依赖项(包括Spring Boot)的传递依赖项,因此单独将它从所有依赖项中排除是不切实际的(或可能的?)。

是否有一种(相对无痛)的方法可以从所有依赖项中排除传递依赖项,除了需要它的那些依赖项?

1 个答案:

答案 0 :(得分:1)

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

例如,Spring Boot默认使用Logback,这里是描述如何使用slf4j-test的gradle脚本片段:

configurations.testCompile {
    exclude group: 'ch.qos.logback', module: 'logback-classic'
}

dependencies {
    compile(group: 'org.springframework.boot', name: 'spring-boot-starter')
    ...

    testCompile(group: 'org.springframework.boot', name: 'spring-boot-starter-test')
    testCompile(group: 'com.github.valfirst', name: 'slf4j-test', version: '1.3.0')
}