gpt4 book ai didi

gradle - 从 gradleApi() 中排除依赖

转载 作者:行者123 更新时间:2023-12-03 03:17:54 26 4
gpt4 key购买 nike

build.gradle 中,我依赖于 gradleApi():

compile gradleApi()

但是,它添加了破坏我的构建的 JAR(重复的 SLF4J 绑定(bind))。我如何从 gradleApi() 中排除某些特定的依赖项(标准的 exclude 似乎不起作用)?如果不可能,我还有哪些其他解决方法?

最佳答案

问题:

我猜你正在写一个 gradle 插件并且你使用了 gradleApi() 依赖。gradleApi() 使用 SLF4J 内部实现,如评论中提到的@Chriki。您自己的 SFL4J 实现将被忽略。

如果通过插件扩展中的传递依赖注入(inject) SLF4J 实现,也会出现此问题。您将收到 SLF4J 警告表:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:....gradle/caches/../generated-gradle-jars/gradle-api-....jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/....gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.25/8dacf9514f0c707cbbcdd6fd699e8940d42fb54e/slf4j-simple-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext]

Gradle 论坛上的讨论:https://discuss.gradle.org/t/logging-in-gradle-plugin/31685/2

解决方案:

删除自定义 SLF4J 实现

在最终解决方案中仅保留基于 Gradle Api 的记录器,以防止模块配置中的任何传递 SLF4J 依赖。

configurations {
implementation.exclude group: 'org.slf4j' // will exclude all transitive dependencies for org.slf4j, or any other specific logger implementation
}

dependencies {
// No org.slf4j dependencies here
}

我必须给 concretepage.com 点赞我在哪里找到了关于如何在配置中排除依赖项的解释。

自定义 Gradle 日志记录

更多关于实际 Gradle 日志系统如何使用和扩展它的信息 official documentation .

关于gradle - 从 gradleApi() 中排除依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54424560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com