Мій проект gradle використовує application
плагін для створення файлу jar. Як частина транзитивних залежностей від виконання, я закінчую свою діяльність org.slf4j:slf4j-log4j12
. (Це згадується як субперехідна залежність принаймні в 5 або 6 інших транзитивних залежностях - цей проект використовує spring та hadoop, тому все, крім кухонної мийки, втягується ... не чекайте ... це теж є :) ).
Я хочу глобально виключити slf4j-log4j12
банку зі своєї побудованої банки. Отже, я спробував це:
configurations {
runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}
Однак це, здається, виключає всі org.slf4j
артефакти, в тому числі slf4j-api
. Під час роботи в режимі налагодження я бачу такі рядки, як:
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).
Я не хочу шукати джерело кожної slf4j-log4j12
транзитивної залежності, а потім мати окремі compile foo { exclude slf4j... }
оператори у своєму dependencies
блоці.
Оновлення:
Я також спробував це:
configurations {
runtime.exclude name: "slf4j-log4j12"
}
Що в підсумку виключає все зі збірки! Як би я вказав group: "*"
.
Оновлення 2:
Для цього я використовую Gradle версії 1.10.