2014-05-07 20 views
8

Aynı dışlama maddelerini paylaşan birden çok öğeyle birlikte Gradle 1.12'de derleme bağımlılığı bildirmeye çalışıyorum (bu, her yerde dışlamayı yinelemekten kaçınmaktır). Bunun gibi bir şey yapabildiğimi biliyorum: Birden çok derleme bağımlılıkları sözdizimi

configurations { 
    compile.exclude group: 'com.google.gwt' 
    all*.exclude group: 'com.google.guava' 
} 

Ancak bu, tüm yapılandırmaları etkileyecektir.

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

yüzden başka bir yerde olması mümkün hala birlikte ben tek bir yerde dışlanma gereken tüm bağımlılıklarını toplamak ve edebilirsiniz: Benim istediğim (aşağıda yazıldığı gibi Gradle 1.12 çalışmıyor) böyle bir şey olduğunu Bu: Güncelleme

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

:

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 
} 
012:
sadece netleştirmek için benim tek hedefi Bu kod parçasını değiştirmektirböyle kısa ve tatlı bir şey (şu anda çalışmıyor) ile:

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

cevap

4

hala compile 'com.google.guava:guava:17.0' sözdizimi kullanmak mümkün olurken başına bağımlılık Kapsam dışı için hiçbir yolu yoktur. configurations.compile.exclude ... yalnızca compile yapılandırmasını (ve bunlardan miras alınan konfigürasyonları) etkileyecek ve hemen hemen her zaman bağımlılık başına hariç tutulanlar hariç tutulacaktır. (Aynı zamanda bir alt proje çalışır mesela dependencies { compile libs.error_data_io }) ihtiyaç duyduğunuz her yerde Daha sonra bu bildirimleri yeniden kullanabilirsiniz

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

:

Başka bir çözüm gibi bir şeyle bağımlılık bildirimleri çarpanlarına etmektir. Gerçekten istediyseniz, aynı { exclude ... } bloğunu birden çok deklarasyon arasında paylaşabilirsiniz (bunu yerel bir değişkene atayarak).

+0

Teşekkürler Peter, ama merak ediyorum Sorunumu iyi açıkladıysam ... Soruyu güncelledim ve açıklığa kavuşturdum, sadece Gradle'ın istediğim şey için kompakt bir sözdizimi sağladığına inanamıyorum. –

+2

Nadiren gerekli ve bu nedenle Gradle bunun için özel bir sözdizimi sağlamaz. Tabii ki, her zaman dışarıda bulunamazsınız = {exclude ...} 've sonra" foo: bar: 1.0 "derler," hariç tutulur ". –

+0

iyi ... teşekkürler. Sana hala kredi vereceğim :-) –