Mon projet gradle utilise le application
plugin pour créer un fichier jar. Dans le cadre des dépendances transitives d'exécution, je finis par m'installer org.slf4j:slf4j-log4j12
. (Il est référencé comme une dépendance sous-transitive dans au moins 5 ou 6 autres dépendances transitives - ce projet utilise spring et hadoop, donc tout sauf l'évier de la cuisine est entraîné ... non attendez ... c'est là aussi :) ).
Je souhaite exclure globalement le slf4j-log4j12
pot de mon pot créé. Alors j'ai essayé ceci:
configurations {
runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}
Cependant, cela semble exclure tous les org.slf4j
artefacts, y compris slf4j-api
. Lors de l'exécution en mode débogage, je vois des lignes telles que:
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).
Je ne veux pas avoir à rechercher la source de chaque slf4j-log4j12
dépendance transitive et ensuite avoir des compile foo { exclude slf4j... }
déclarations individuelles dans mon dependencies
bloc.
Mettre à jour:
J'ai aussi essayé ceci:
configurations {
runtime.exclude name: "slf4j-log4j12"
}
Ce qui finit par exclure tout de la construction! Comme si j'avais précisé group: "*"
.
Mise à jour 2:
J'utilise Gradle version 1.10 pour cela.