gpt4 book ai didi

java - 为什么我的库的编译依赖项会泄漏?

转载 作者:太空宇宙 更新时间:2023-11-04 11:29:19 24 4
gpt4 key购买 nike

我正在使用 Gradle 3.4.1。

我有一个使用 Gradle java-library 插件构建的库(我们称之为 utils),它会生成一个漂亮的 JAR 文件。这是依赖项部分:

dependencies {
// public API
api group: "org.postgresql", name: "postgresql", version: "9.2-1004-jdbc4"
api group: "log4j", name: "log4j", version: "1.2.17"

// implementation specific
implementation group: "commons-configuration", name: "commons-configuration" , version: "1.10"
implementation group: "commons-lang", name: "commons-lang" , version: "2.6"
}

现在我的项目包含这个库以及其他一些 Apache Commons 库:

dependencies {
compile group: "com.foo", name: "utils", version: "6.+", changing: true
compile group: "org.apache.commons", name: "commons-lang3", version: "3.5"
compile group: "commons-io", name: "commons-io" , version: "2.5"
}

在项目的类路径中,我现在拥有 commons-lang 库以及 commons-lang3 库,尽管我指定了适当的依赖项作为 implementation!根据文档https://docs.gradle.org/3.4.1/userguide/java_library_plugin.html这应该是正确的方法。

这是我的项目的依赖项列表:

default - Configuration for default artifacts.
+--- com.foo:utils:6.+ -> 6.0.0
| +--- org.postgresql:postgresql:9.2-1004-jdbc4
| +--- log4j:log4j:1.2.17
| +--- commons-configuration:commons-configuration:1.10
| | +--- commons-lang:commons-lang:2.6
| | \--- commons-logging:commons-logging:1.1.1
| \--- commons-lang:commons-lang:2.6
+--- org.apache.commons:commons-lang3:3.5
\--- commons-io:commons-io:2.5

我做错了什么?如何摆脱外部依赖项 commons-langcommons-configuration

最佳答案

有多种方法可以排除传递依赖,在几个问题和 gradle 文档中都有介绍。

configurations {
compile.transitive = false
}

configurations.all {
exclude group:"ch.qos.logback", module:"logback-core"
}

dependencies {
compile ('foo:bar:0.1') {
exclude group: "org.slf4j", module: "slf4j-log4j12"
}
}

关于java - 为什么我的库的编译依赖项会泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974680/

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