2014-05-07 7 views
8

Ich versuche, eine Kompilierabhängigkeit in Gradel 1.12 zu deklarieren, mit mehreren Elementen, die die gleichen Ausschlussklauseln teilen (dies ist zu vermeiden, den Ausschluss überall zu wiederholen). Ich weiß, dass ich etwas tun kann:Gradle mehrere Kompilierabhängigkeiten Syntax

, aber dies wird Auswirkungen auf alle Konfigurationen. Was ich will, ist so etwas wie dies (die nicht in Gradle 1.12 funktionieren wie unten geschrieben):

compile (
     ["org.jboss.errai:errai-data-binding:2.4.4.Final"] 
     ,["org.jboss.errai:errai-data-ioc:2.4.4.Final"] 
    ){ 
     exclude group: 'com.google.gwt' 
     exclude group: 'com.google.guava' 
    } 

so kann ich sammle alle Abhängigkeiten für die ich Ausschlüsse muß an einem Ort, und noch in der Lage sein, an anderer Stelle zu haben, dies:

compile 'com.google.guava:guava:17.0' 

Update: nur um zu klären, mein einziges Ziel ist es, dieses Stück Code zu ersetzen:

compile ('bla.bla.bla:1.0'){ 
    exclude 'same.component:1.0' //Ugly repeat 
} 
compile ('boo.boo.boo:1.0'){ 
    exclude 'same.component:1.0' //Ugly repeat 
} 
compile ('uh.uh.uh:1.0'){ 
    exclude 'same.component:1.0' //Ugly repeat 
} 
compile ('oh.oh.oh:1.0'){ 
    exclude 'same.component:1.0' //Ugly repeat 
} 

mit etwas kurz und süß wie diesem (zur Zeit nicht in Betrieb):

compile('bla.bla.bla:1.0' 
     ,'boo.boo.boo:1.0' 
     ,'uh.uh.uh:1.0' 
     ,'oh.oh.oh:1.0' 
) 
{ 
    exclude 'same.component:1.0' //Only once! Sweet! 
} 

Antwort

4

Es gibt keine Möglichkeit pro Abhängigkeit umfasst nicht zu haben, während immer noch die compile 'com.google.guava:guava:17.0' Syntax verwenden zu können. configurations.compile.exclude ... wirkt sich nur auf die compile-Konfiguration (und Konfigurationen, die von ihr abgeleitet werden) aus und ist fast immer vorzuziehen, je nach Abhängigkeitsausschluss.

Eine andere Lösung ist wie Abhängigkeitserklärungen mit etwas ausklammern:

ext.libs = [ 
    error_data_ioc: dependencies.create("org.jboss.errai:errai-data-ioc:2.4.4.Final") { 
     exclude group: 'com.google.gwt' 
     exclude group: 'com.google.guava' 
    } 
] 

Dann können Sie diese Erklärungen wieder verwenden, wo immer sie benötigt werden (z dependencies { compile libs.error_data_io }, funktioniert auch aus einem Teilprojekt). Wenn Sie wirklich wollten, könnten Sie auch denselben Block unter mehreren Deklarationen teilen (indem Sie ihn einer lokalen Variablen zuweisen).

+0

Danke Peter, aber ich frage mich, ob ich mein Problem gut erklärt habe ... Ich habe die Frage aktualisiert und geklärt, ich kann einfach nicht glauben, dass Gradle keine kompakte Syntax für das, was ich will, bietet. –

+2

Es wird selten benötigt, und daher bietet Gradle keine spezielle Syntax dafür. Natürlich können Sie 'def excludes = {exclude ...}' und dann 'compile" foo: bar: 1.0 "excludes' machen. –

+0

gut ... danke. Ich gebe dir immer noch die Ehre :-) –

Verwandte Themen