我的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。