Meu projeto gradle usa o application
plugin para construir um arquivo jar. Como parte das dependências transitivas do tempo de execução, eu acabo puxando org.slf4j:slf4j-log4j12
. (É referenciado como uma dependência subtransitiva em pelo menos 5 ou 6 outras dependências transitivas - este projeto está usando spring e hadoop, então tudo, exceto a pia da cozinha está sendo puxado ... não espere ... isso também está lá :) )
Quero excluir globalmente o slf4j-log4j12
jarro do meu jarro construído. Então, eu tentei isso:
configurations {
runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}
No entanto, isso parece excluir todos os org.slf4j
artefatos, incluindo slf4j-api
. Ao executar no modo de depuração, vejo linhas como:
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).
Não quero ter que pesquisar a origem de cada slf4j-log4j12
dependência transitiva e, em seguida, ter compile foo { exclude slf4j... }
instruções individuais em meu dependencies
bloco.
Atualizar:
Eu também tentei isso:
configurations {
runtime.exclude name: "slf4j-log4j12"
}
O que acaba excluindo tudo do build! Como se eu especificasse group: "*"
.
Atualização 2:
Estou usando o Gradle versão 1.10 para isso.