В моем проекте gradle используется плагин application
для создания файла jar. В рамках переходных зависимостей времени выполнения я втягиваю org.slf4j:slf4j-log4j12
. (Он упоминается как субтранзитивная зависимость по меньшей мере в 5 или 6 других транзитивных зависимостях - этот проект использует spring и hadoop, поэтому все, кроме кухонной раковины, втягивается... нет, подождите... что тоже:)).
Я хочу глобально исключить банку slf4j-log4j12
из моей встроенной банки. Поэтому я пробовал это:
configurations {
runtime.exclude group: "org.slf4j", module: "slf4j-log4j12"
}
Однако это, кажется, исключает артефакты all 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
.
Update:
Я также попробовал это:
configurations {
runtime.exclude name: "slf4j-log4j12"
}
Конец заканчивается, исключая все из сборки! Как будто я указал group: "*"
.
Обновление 2:
Я использую gradle версию 1.10 для этого.