Il mio progetto gradle utilizza il application
plugin per creare un file jar. Come parte delle dipendenze transitive di runtime, finisco per tirare in org.slf4j:slf4j-log4j12
. (Viene indicato come una dipendenza sub-transitiva in almeno 5 o 6 altre dipendenze transitive: questo progetto utilizza spring e hadoop, quindi tutto tranne il lavello della cucina viene tirato dentro ... no aspetta ... anche quello è lì :) ).
Voglio escludere globalmente il slf4j-log4j12
vaso dal mio vaso costruito. Quindi ho provato questo:
configurations {
runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}
Tuttavia, questo sembra escludere tutti gli org.slf4j
artefatti inclusi slf4j-api
. Quando si esegue in modalità debug, vedo linee come:
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).
Non voglio dover cercare l'origine di ogni slf4j-log4j12
dipendenza transitiva e quindi avere compile foo { exclude slf4j... }
istruzioni individuali nel mio dependencies
blocco.
Aggiornare:
Ho provato anche questo:
configurations {
runtime.exclude name: "slf4j-log4j12"
}
Il che finisce per escludere tutto dalla build! Come se avessi specificato group: "*"
.
Aggiornamento 2:
Sto usando Gradle versione 1.10 per questo.