SLF4J:带有Gradle插件的多个SLF4J绑定

And*_*der 6 plugins gradle log4j2

我知道SLF4J存在一个常见问题:类路径包含多个SLF4J绑定。

SLF4J: Found binding in [jar:file:/C:/Users/<name>/.gradle/caches/4.9/generated-gradle-jars/gradle-api-4.9.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/<name>/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.2/afd596adf5086b4f4746254b25a3a4b513f1d6e4/log4j-slf4j-impl-2.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
Run Code Online (Sandbox Code Playgroud)

我在运行gradle build时应用了gradle-plugin插件,例如class with

import org.gradle.api.*
class CommonTestPlugin implements Plugin<Project> {
Run Code Online (Sandbox Code Playgroud)

并在摇篮中

apply plugin: 'java-gradle-plugin'  
Run Code Online (Sandbox Code Playgroud)

我正在使用该插件,因此可以添加代码来创建插件。

上面的错误似乎指向gradle-api作为有问题的依赖关系,但是当我用dependencyInsight --dependency gradle-api启动依赖关系见解任务时

它返回:

No dependencies matching given input were found in configuration ':compileClasspath'
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何确定如何定义/排除插件正在使用的依赖关系?我正在使用以下内容,我只是想不出如何将其应用于plugin-api

compile (group: 'com.aestasit.infrastructure.sshoogr', name: 'sshoogr', version: '0.9.26'){
    // exclude this to stop warnings about multiple SLF4J bindings.
    exclude group: 'ch.qos.logback', module: 'logback-classic'
}
Run Code Online (Sandbox Code Playgroud)

bad*_*hop 6

我遇到了同样的问题。到目前为止我发现的解决方法是从正在构建的目标 JAR 中残酷地排除:

bootJar{
  exclude('gradle-api-*.jar', 'groovy-*.jar')
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 Spring 启动插件。bootJar延长jar任务。

但问题仍然存在:插件的所有用户都必须执行这种排除骗术才能使其正常工作吗?