随着项目中module数量的增大,随之而来的就是build.gradle
文件中的依赖管理越来越复杂。。。
说了两句废话,下面直接说解决方法:
- 修改工程根目录下的
build.gradle
apply from: 'config.gradle'
- 具体module下的依赖添加方式,重点就是第一行
// 重点在此
implementation rootProject.ext.libs
def testLibs = rootProject.ext.testLibs
testImplementation testLibs[0]
androidTestImplementation testLibs[1, 2] // list子集
def otherLibs = rootProject.ext.otherLibs
// Glide
annotationProcessor otherLibs["glideCompiler"]
- 下面看一下的
config.gradle
书写方式
android = [
minSdkVersion : 15,
targetSdkVersion : 27,
compileSdkVersion: 29,
buildToolsVersion: '28.0.3'
]
versions = [
retrofit: '2.3.0',
glide : '4.10.0',
junit : '4.12'
]
libs = [
// AndroidX
'androidx.appcompat:appcompat:1.0.0',
'androidx.core:core-ktx:1.1.0',
'androidx.annotation:annotation:1.1.0',
"androidx.recyclerview:recyclerview:1.1.0",
// Retrofit
"com.squareup.retrofit2:retrofit:$versions.retrofit",
"com.squareup.retrofit2:converter-gson:$versions.retrofit",
'com.squareup.okhttp3:logging-interceptor:3.9.0',
'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0',
// Glide
'com.github.bumptech.glide:glide:' + versions.glide,
'com.github.bumptech.glide:okhttp3-integration:' + versions.glide,
'jp.wasabeef:glide-transformations:2.0.1',
// Kotlin
"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
]
testLibs = [
"junit:junit:" + versions.junit,
"androidx.test.ext:junit:1.1.1",
"androidx.test:rules:1.2.0"
]
otherLibs = [
glideCompiler: 'com.github.bumptech.glide:compiler:' + versions.glide
]
}
总结
Gradle依赖管理的目的就是下面两点:
- 添加依赖简单
- 方便进行统一的版本控制
控制台提示的依赖添加方式:
The following types/formats are supported:
- Instances of Dependency.
- String or CharSequence values, for example 'org.gradle:gradle-core:1.0'.
- Maps, for example [group: 'org.gradle', name: 'gradle-core', version: '1.0'].
- FileCollections, for example files('some.jar', 'someOther.jar').
- Projects, for example project(':some:project:path').
- ClassPathNotation, for example gradleApi().
欢迎提出问题,一起讨论,更欢迎指出更好的依赖添加方式。