2013-10-24 285 views
1

我正在使用gradle,儘管我一直在使用exclude成功刪除傳遞依賴關係,但我不想要,我似乎無法解決如何解決以下問題。從依賴關係中排除依賴關係

假設我有以下的依存關係:

org.library:useful:2.0.0 
+--org.library:logging:1.5 
+--org.another-library:tools:1.9 
    +--org.library:logging:1.4 

正如你可以看到我有記錄1.5和1.4日誌之間的版本衝突。在我的配置我知道,我可以用排除做到以下幾點:

config('org.library:useful:2.0.0') { 
    exclude(group: 'org.library', module: 'logging') 
} 

但我怎麼說「exclude logging 1.4"這並非來自什麼,我依賴(在這個例子中它來自org.another-library:tools:1.9

?與事實打交道,你可能有依賴性衝突,你想它總是解析到一個特定版本的

回答

0

一種方法是使用分辨率戰略,迫使:

configurations.all { 
    resolutionStrategy { 
    force 'org.library:logging:1.5' 
    } 
} 

而且,請注意,在你的榜樣, 1.4將被排除在anywa之外y默認爲Gradle,如果有version conflict,則選擇最高版本。

+0

感謝@erdi,爲了您的評論,我正在切換到使用failOnVersionConflict(),這會導致構建在這種情況下失敗。 – imrichardcole