2014-07-06 9 views
6

Używam Gradle do mojego projektu. Jednym z zależnościami Mam określonych w moim build.gradle jest
compile 'org.glassfish.jersey.media:jersey-media-moxy:2.0'Ta zależność daje mi dwie wersje jednego słoika. Jak to naprawić?

Działa to dobrze na normalnej aplikacji Java, jednak gdy próbuję budować na Androida uzyskać:

Patrząc na które biblioteki są przywoływane, jasne jest, że są oba javax.inject-2.3.0-b05.jar i javax.inject-1.jar, które znalazłem są dodawane przez zależność powyżej. Zgaduję, że ten "zduplikowany" jar powoduje błąd kompilacji.

Jak to obejść? Dlaczego zależność obejmuje dwa takie same słoiki? Czy jest jakiś sposób, aby przygotować wersję Androida z tymi dwoma słoikami lub usunąć jeden z tych słoików?

Odpowiedz

2

Wydaje się, że masz drzewa zależności pokrewny

project 
|--- org.glassfish.jersey.media:jersey-media-moxy:2.0 
| \--- *:javax.inject:1 
\--- *:javax.inject:2.3.0-b05 

Gdzie * jest grupa, która podejrzewam mogą różnić się od tych dwóch.

Spróbuj znaleźć pomysł na to jak Zależności są chwycił za pomocą zadania dependency

gradle dependency 

Gdyby trzeba wykluczyć zależność wprowadzić go w tagu, podobnie jak na poniższym przykładzie

compile('org.hibernate:hibernate:3.1') { 
    //excluding a particular transitive dependency: 
    exclude module: 'cglib' //by artifact name 
    exclude group: 'org.jmock' //by group 
    exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group 
} 
1

Zwykle gradacja obejmuje tylko 1 słoik na zależność. Jeśli zostanie znaleziona inna wersja dla tych samych depedancji, zostanie użyta nowsza wersja.

Jednak w przypadku tych 2 słoje są zależnościami o różnych nazwach Grupa:

'javax.inject:javax.inject:1' 
'org.glassfish.hk2.external:javax.inject:2.3.0-b05' 

Dlatego Gradle zawarte zarówno jak są one traktowane jako różne zależności.

'javax.inject: javax.inject: 1' jest bardzo stary, myślę, że powinieneś wykluczyć to, co powiedział Niels Bech Nielsen.

Aby dowiedzieć się, gdzie jest to zależność pochodzą, można użyć polecenia:

gradle -q dependencyInsight --dependency inject 
Powiązane problemy