我的 gradle 项目使用 application
插件来构建一个 jar 文件。作为运行时传递依赖关系的一部分,我最终使用了 org.slf4j:slf4j-log4j12
。(它在至少5或6个其他传递依赖中作为次传递依赖被引用——这个项目使用的是 spring 和 hadoop,所以除了厨房水槽以外的所有东西都被拉进来了... ... 不,等等... ... 那里也有:)。
我希望在全局范围内排除构建的罐子中的 slf4j-log4j12
罐子,所以我尝试了以下方法:
configurations {
runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}
然而,这似乎排除了包括 slf4j-api
在内的 所有 org.slf4j
工件:
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
传递依赖关系的源,然后在我的 dependencies
块中有单独的 compile foo { exclude slf4j... }
语句。
更新:
我也试过这个:
configurations {
runtime.exclude name: "slf4j-log4j12"
}
最终从构建中排除了 一切! 就好像我指定了 group: "*"
一样。
更新2:
我使用的是1.10版本。