概述
在一個項目有多個module 的時候,不可避免的會存在不同的module會有相同的依賴的問題。
最一般的做法,我們開發要引入一個依賴的時候,就去看一下其他項目依賴了哪個版本,然後複製粘貼。
但是一旦發現其他多項目對同一個庫,存在依賴多個版本的時候,也就不知道複製哪個了。碰到這種情況,就只能增加溝通成本了。
針對這種情況,我們可以對依賴增加一個統一的版本控制。這樣即使是剛參與開發的同事也能不需要熟悉項目的情況下直接引入需要的依賴。
如果使用這種方式全局統一依賴的版本,那麼就幾乎也不會存在版本不同導致依賴衝突的問題了。
demo結構
app :主項目。 依賴onetest和gson。
onetest:test項目。 依賴gson。
commen.gradle:爲了統一依賴而加入的gradle文件。
demo中的依賴管理
- common.gradle中統一 gson版本
- 根項目的build.gradle 應用 common.gradle
- app項目中依賴 onetest和gson。
- onetest中依賴 gson
避免依賴衝突,app項目中依賴gson使用implementation,onetest中依賴gson使用compileOnly。
common.gradle
ext {
depend = [
"gson": 'com.google.code.gson:gson:2.8.2',
]
}
ext是Gradle領域對象的一個屬性,我們可以將自定義的屬性添加到ext對象上。
根項目的build.gradle
需要再根項目的build.gradle 頂部加上如下代碼。
apply from: "common.gradle"
app項目依賴
build.gradle中的依賴如下:
dependencies {
project (':onetest')
implementation rootProject.ext.depend["gson"]
}
onetest項目依賴
build.gradle中的依賴如下:
dependencies {
compileOnly rootProject.ext.depend["gson"]
}