2013-11-14 13 views
14

Wie kann ich eine bestimmte transitive Abhängigkeit in Gradle ignorieren?So ignorieren Sie eine bestimmte transitive Abhängigkeit von allen Abhängigkeiten in Gradle

Zum Beispiel hängen viele Bibliotheken (wie Spring und ...) auf commons-logging, ich möchte ersetzen commons-logging mit SLF4J (und seine JCL-over-slf4j Brücke).

Ist es irgendwie in meinem Großbuchstaben-Skript, es einmal zu erwähnen, und nicht für jede Abhängigkeit, die von commons-logging abhängt?

Ich dachte an ein Skript, das auf alle Abhängigkeiten iteriert und auf allen von ihnen einige exclude hinzufügt, gibt es eine bessere Lösung? Und wie ist dieses Skript?

+0

Bitte versuchen Lösungsstrategie: http://stackoverflow.com/questions/23124509/how-to-exclude-specific-jars-from-web-inf-lib/30393301#30393301 – smilyface

Antwort

18
configurations { 
    compile.exclude group: 'commons-logging' 
} 
+8

Oder: ' configurations.all {ausschließen Gruppe: 'commons-logging'} '. –

+1

Gibt es eine Möglichkeit, eine bestimmte Version einer Gruppe auszuschließen? – JayKay

13

Kam hier mit dem gleichen Problem, aber endete mit den folgenden, um einen tatsächlichen Ersatz zu tun. Veröffentlichen Sie es der Vollständigkeit halber.

configurations.all { 
    resolutionStrategy.eachDependency { 
     if(it.requested.name == 'commons-logging') { 
      it.useTarget 'org.slf4j:jcl-over-slf4j:1.7.7' 
     } 
    } 
} 
+1

Kudos für Ihre Antwort und die Eleganz von Gradle bei solchen Aufgaben. –

+1

Ich möchte hinzufügen, dass in der Zwischenzeit eine neue Gradle-Version veröffentlicht wurde und es Modul-Ersatz hat. Habe es noch nicht probiert, aber es sieht so aus, als könnten sie das Gleiche machen. – user2543253

Verwandte Themen