好像gradle7就用不了ext了,一 apply 就报错,看到很多人都推荐kotlin+buildSrc,确实简单方便。
这里记录一下使用kotlin+buildSrc实现统一依赖管理。
0. 先添加镜像
(详情),不需要的可以直接跳过
根目录,settings.gradle
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven {
allowInsecureProtocol = true
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
maven {
allowInsecureProtocol = true
url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
}
maven {
allowInsecureProtocol = true
url 'http://maven.aliyun.com/nexus/content/repositories/google'
}
maven {
allowInsecureProtocol = true
url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin'
}
google()
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
rootProject.name = "ChatTest"
include ':app'
include ':im_lib'
1. 创建目录和文件
参考文章
[译]Kotlin + buildSrc:更好的管理Gadle依赖 - 掘金
在根目录创建普通目录buildSrc,gradle运行时会自动编译和加载该目录
创建buildSrc/build.gradle.kts
plugins {
`kotlin-dsl`
}
repositories {
mavenCentral()
google()
gradlePluginPortal()
}
创建buildSrc/src/main/java/Dependencies.kt
object Versions {
const val fastjson = "1.2.49"
const val protobuf = "3.24.4"
}
object Libs {
const val fastjson = "com.alibaba:fastjson:${Versions.fastjson}"
const val protobuf = "com.google.protobuf:protobuf-java:${Versions.protobuf}"
}
2. 执行一次Gradle Sync任务
执行操作后,现在可以随意访问Dependencies.kt中任何值了
buildSrc目录也会自动变成module
在子模块中引用