如何在使用Kotlin DSL的Gradle多模块项目中复用依赖版本?
Gradle Kotlin DSL多模块项目统一管理依赖版本的实现方案
你可以根据项目规模和Gradle版本选择以下任意一种方案实现:
方法1:使用gradle.properties全局配置(最简便,适合中小项目)
- 在项目根目录新建/打开
gradle.properties文件,添加版本声明:
jacksonVersion=2.10.4
- 根目录
build.gradle.kts使用方式:
subprojects { // 提前声明变量,当前块内可复用 val jacksonVersion: String by project dependencies { implementation("com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}") } }
- 子模块
build.gradle.kts使用方式:
// 文件开头声明变量 val jacksonVersion: String by project dependencies { implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-csv:${jacksonVersion}") }
方法2:在根项目subprojects块中定义扩展属性
如果不想单独新增配置文件,可以直接在根构建脚本中统一声明:
- 修改根目录
build.gradle.kts的subprojects块:
subprojects { // 定义扩展属性,所有子模块都可以读取 extra["jacksonVersion"] = "2.10.4" // 根subprojects内的dependencies可以直接读取 val jacksonVersion: String by extra dependencies { implementation("com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}") } }
- 子模块
build.gradle.kts使用方式:
val jacksonVersion: String by extra dependencies { implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-csv:${jacksonVersion}") }
方法3:使用Gradle版本目录(Version Catalog,Gradle7.0+推荐,适合中大型项目)
这是Gradle官方推荐的版本管理方案,支持版本统一管理、依赖别名声明,还能跨项目复用。
- 在项目根目录的
gradle文件夹下新建libs.versions.toml文件,添加如下内容:
[versions] jackson = "2.10.4" [libraries] jackson-databind = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" } jackson-dataformat-csv = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-csv", version.ref = "jackson" }
- 所有模块(包括根项目subprojects块、子模块)直接通过别名引入依赖,不需要额外声明变量:
根目录build.gradle.kts:
subprojects { dependencies { implementation(libs.jackson.databind) } }
子模块build.gradle.kts:
dependencies { implementation(libs.jackson.dataformat.csv) }
内容的提问来源于stack exchange,提问作者boden
相关产品推荐
相关产品推荐

