Мой проект 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.