Mi proyecto gradle usa el application
complemento para crear un archivo jar. Como parte de las dependencias transitivas del tiempo de ejecución, termino entrando org.slf4j:slf4j-log4j12
. (Se hace referencia a ella como una dependencia sub-transitiva en al menos 5 o 6 otras dependencias transitivas; este proyecto está usando spring y hadoop, por lo que todo, excepto el fregadero de la cocina, se está tirando ... no, espera ... eso también está ahí :) ).
Quiero excluir globalmente el slf4j-log4j12
jar de mi jar construido. Entonces probé esto:
configurations {
runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}
Sin embargo, esto parece excluir todos los org.slf4j
artefactos incluidos slf4j-api
. Cuando se ejecuta en modo de depuración, veo líneas 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).
No quiero tener que buscar la fuente de cada slf4j-log4j12
dependencia transitiva y luego tener compile foo { exclude slf4j... }
declaraciones individuales en mi dependencies
bloque.
Actualizar:
También probé esto:
configurations {
runtime.exclude name: "slf4j-log4j12"
}
¡Lo que termina excluyendo todo de la construcción! Como si lo hubiera especificado group: "*"
.
Actualización 2:
Estoy usando Gradle versión 1.10 para esto.