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