2014-05-07 12 views
8

Sto tentando di dichiarare una dipendenza compilata in Gradle 1.12, con più elementi che condividono le stesse clausole di esclusione (questo per evitare di ripetere l'esclusione ovunque). So che posso fare qualcosa di simile:Sintassi delle dipendenze multiple di gradle

... 32

ma questo interesserà TUTTE le configurazioni. Quello che voglio è qualcosa di simile (che non funziona in Gradle 1.12 come scritto qui di seguito):

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' 
    } 

in modo da poter raccogliere tutte le dipendenze per i quali ho bisogno di esclusione in un unico luogo, e di essere ancora in grado di avere altrove questo:

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

Update: Giusto per chiarire, il mio unico obiettivo è quello di sostituire questo pezzo di codice:

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 
} 

con qualcosa di breve e dolce come questo (che non funziona attualmente):

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! 
} 

risposta

4

Non v'è alcun modo per avere esclude per-dipendenza pur essendo in grado di utilizzare la sintassi compile 'com.google.guava:guava:17.0'. configurations.compile.exclude ... riguarderà solo la configurazione compile (e le configurazioni che ne ereditano) ed è quasi sempre preferibile rispetto alle esclusioni per dipendenza.

Un'altra soluzione è quella di scomporre le dichiarazioni di dipendenza con qualcosa di simile:

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' 
    } 
] 

Poi si può riutilizzare queste dichiarazioni, ovunque ne avete bisogno (per esempio dependencies { compile libs.error_data_io }; anche opere provenienti da un sottoprogetto). Se lo volessi, potresti anche condividere lo stesso blocco { exclude ... } tra più dichiarazioni (assegnandolo a una variabile locale).

+0

Grazie Peter, ma mi chiedo se ho spiegato bene il mio problema ... Ho aggiornato e chiarito la domanda, non riesco a credere che Gradle non fornisca una sintassi compatta per quello che voglio. –

+2

Raramente è necessario, e quindi Gradle non fornisce una sintassi speciale per questo. Ovviamente si può sempre fare "def excludes = {exclude ...}" e quindi "compilare" foo: bar: 1.0 ", excluded". –

+0

beh ... grazie. Ti do ancora il merito :-) –

Problemi correlati