2015-10-21 203 views
1

我有一些庫用於多項目。我在庫中的代碼與更多版本的庫(舊版和新版)兼容。但是庫中有與所有版本不兼容的更改。Gradle - 從包含庫中覆蓋依賴項(排除依賴項)

我有一個較舊的項目,我目前不想更新到最新的構建工具版本,所以對於這個單個項目,我想強制重寫依賴項。

通常我不排除庫的依賴就像下面:

compile ("com.doomonafireball.betterpickers:library:1.6.0") { 
    exclude group: 'com.android.support', module: 'support-v4' 
} 

,如何排除來自本地庫項目的依賴?我試圖

compile project(':dialogs') { 
    exclude group: 'com.afollestad.material-dialogs' 
} 

但是,這並不編譯...

編輯

這裏是我的對話框庫:

compile('com.afollestad.material-dialogs:core:[email protected]') { 
    transitive = true; 
} 
compile('com.afollestad.material-dialogs:commons:[email protected]') { 
    transitive = true; 
} 

這裏是我的嘗試,但它不工作:

compile(project(':dialogs')) { 
    exclude group: 'com.afollestad.material-dialogs' 
} 
compile 'com.afollestad:material-dialogs:0.7.8.1' 

問題:它編譯和運行,但我得到NoSuchMethod例外。當我註釋掉0.8.4.2庫線,並與0.7.8.1線替換它(在我的庫)一切工作正常...

+0

你有沒有解決這個問題? – user1809913

+0

不......它沒有找到方法,如果我這樣做,所以我仍然註釋掉手動代碼... – prom85

回答

6

或許應該幫助: https://discuss.gradle.org/t/excluding-transitive-dependency-does-not-work-for-project-dependency/8719

這是一個語法問題。您正在調用exclude的閉包被解釋爲project()方法的參數,這是不正確的。看起來應該像這樣:

compile(project(':baseproject')) { 
    exclude group: 'com.miglayout' 
} 

請參閱編譯包裝項目用括號()

+0

你是對的,不知道我可以使用該語法爲地方圖書館以及。現在工作,非常感謝你 – prom85

+0

我剛剛編輯我的問題...我仍然有一個問題。這不符合預期...任何進一步的想法或tipps? – prom85

+0

你能提供日誌片段嗎?我不清楚誰是誰,什麼時候拋出NoSuchMethod – Sergey

相關問題