Mój projekt Gradle używa application
wtyczki do zbudowania pliku jar. W ramach zależności przechodnich środowiska uruchomieniowego w końcu ściągam org.slf4j:slf4j-log4j12
. (Jest to określane jako zależność przechodnia w co najmniej 5 lub 6 innych zależnościach przechodnich - ten projekt używa sprężyny i hadoopa, więc wszystko oprócz zlewu kuchennego jest wciągane ... nie czekaj ... to też jest :) ).
Chcę globalnie wykluczyć slf4j-log4j12
słoik z mojego zbudowanego słoika. Więc próbowałem tego:
configurations {
runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}
Wydaje się jednak, że wyklucza to wszystkie org.slf4j
artefakty, w tym slf4j-api
. Podczas pracy w trybie debugowania widzę linie takie jak:
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).
Nie chcę wyszukiwać źródła każdej slf4j-log4j12
zależności przechodniej, a następnie umieszczać compile foo { exclude slf4j... }
w dependencies
bloku poszczególne instrukcje .
Aktualizacja:
Próbowałem też tego:
configurations {
runtime.exclude name: "slf4j-log4j12"
}
Co kończy się wykluczeniem wszystkiego z kompilacji! Jakbym sprecyzował group: "*"
.
Aktualizacja 2:
Używam do tego Gradle w wersji 1.10.