Mein Gradle-Projekt verwendet das application
Plugin, um eine JAR-Datei zu erstellen. Als Teil der transitiven Laufzeitabhängigkeiten ziehe ich am Ende ein org.slf4j:slf4j-log4j12
. (Es wird in mindestens 5 oder 6 anderen transitiven Abhängigkeiten als subtransitive Abhängigkeit bezeichnet - dieses Projekt verwendet Spring und Hadoop, also wird alles außer dem Spülbecken eingezogen ... keine Wartezeit ... das ist auch da :) ).
Ich möchte das slf4j-log4j12
Glas global von meinem gebauten Glas ausschließen. Also habe ich das versucht:
configurations {
runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}
Dies scheint jedoch alle org.slf4j
Artefakte einschließlich auszuschließen slf4j-api
. Wenn ich im Debug-Modus laufe, sehe ich Zeilen wie:
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).
Ich möchte nicht die Quelle jeder slf4j-log4j12
transitiven Abhängigkeit nachschlagen müssen und dann einzelne compile foo { exclude slf4j... }
Anweisungen in meinem dependencies
Block haben.
Aktualisieren:
Ich habe auch folgendes versucht:
configurations {
runtime.exclude name: "slf4j-log4j12"
}
Was dazu führt, dass alles vom Build ausgeschlossen wird! Als ob ich angegeben hätte group: "*"
.
Update 2:
Ich verwende dafür Gradle Version 1.10.