12

Staram się rozwiązać problem,Jak wykluczyć moduł ze wszystkimi zależnościami, ale pozostawiają wyraźne oświadczenie Gradle

mam pewne zależności zadeklarowane w pliku build.gradle dla mojego Android app, ale problemem jest to, że wiele zależności te używają tej samej biblioteki kompatybilnego, w moim przypadku appcompat-v7.
Jest możliwe, aby wykluczyć tę bibliotekę dla każdego uzależnienia

compile ('com.github......'){ 
    exclude group: 'com.android.support', module: 'appcompat-v7' 
} 

Ale muszę to zrobić w dla każdego uzależnienia
Innym sposobem jest użycie Taka ekspresja

configurations { 
    compile.exclude module: 'appcompat-v7' 
} 

To działa, ale nawet Jeśli deklarujesz tę bibliotekę jawnie, jest ona ignorowana. Jedyne, czego potrzebuję, to włączenie tej biblioteki tylko raz dla całej aplikacji, ponieważ jeśli skompilować bez wykluczenia go pokaże dużo błędów jak has been already defined.
Może jest łatwiejszy sposób, aby dostać tę pracę. Byłbym wdzięczny za każdą pomoc, dzięki.

+0

Gradle powinien dbać o upewniając się tylko jedna kopia zależność jest na ścieżce klasy w najwyższej wersji. Czy możesz zaktualizować swój post do obejmują 'Gradle dependencyInsight --configuration kompilacji --dependency AppCompat-v7'? – Ethan

Odpowiedz

0

Używamy dostarczonej konfiguracji w gradle (tak, że gdy oceniamy: eclipse, pakiety są dołączone, ale nie są dołączane po skompilowaniu do słoika, ponieważ te słoiki powinny być dostarczane w czasie wykonywania). Taka konfiguracja wygląda następująco:

configurations { 
    provided { 
    dependencies.all {dep -> 
     configurations.default.exclude group: dep.group, module:dep.name 
    } 
    } 
    compile.extendsFrom provided 
} 

To pozwala nam m.in. zależności następująco:

dependencies { 
    compile("org.scala-lang:scala-library:2.11.7") 
    compile("org.scala-lang:scala-compiler:2.11.7") 
    provided("org.apache.spark:spark-core_2_11:2.0.0") 
} 

Spróbuj utworzyć konfigurację, która zawiera wszystkie zależności gdzie chcesz wykluczyć AppCompat-v7, a następnie rozszerzyć skompilować z tej nowej konfiguracji.

Powiązane problemy