我的 gradle 项目使用application
插件来构建一个 jar 文件。作为运行时传递依赖的一部分,我最终引入了org.slf4j:slf4j-log4j12
. (它在至少 5 或 6 个其他传递依赖项中被引用为子传递依赖项 - 这个项目使用 spring 和 hadoop,所以除了厨房水槽之外的所有东西都被拉进来......不用等待......那也是 :) )。
我想slf4j-log4j12
从我构建的 jar 中全局排除 jar。所以我试过这个:
configurations {
runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}
但是,这似乎排除了所有 org.slf4j
工件,包括slf4j-api
. 在调试模式下运行时,我看到如下行:
org.slf4j#slf4j-api is excluded from com.pivotal.gfxd:gfxd-demo-mapreduce:1.0(runtime).
org.slf4j#slf4j-simple is excluded from com.pivotal.gfxd:gfxd-demo-mapreduce:1.0(runtime).
org.slf4j#slf4j-log4j12 is excluded from org.apache.hadoop:hadoop-common:2.2.0(runtime).
我不想查找每个slf4j-log4j12
传递依赖的来源,然后在我的块中有单独compile foo { exclude slf4j... }
的语句。dependencies
更新:
我也试过这个:
configurations {
runtime.exclude name: "slf4j-log4j12"
}
最终排除了构建中的所有内容!好像我指定了group: "*"
.
更新 2:
我为此使用 Gradle 1.10 版。