我有一个多模块Gradle项目,Kotlin DSL作为构建文件。在根build.gradle.kts
的内部有根dependencies
区,subprojects
区有自己的dependencies
区。我想创建一个变量,可以保持一些依赖的版本,并在build.gradle.kts
的所有模块中使用。
根build.gradle.kts
看起来像:
buildscript {
// ...
}
plugins {
// ...
}
subprojects {
// repositories, plugins, tasks, etc.
dependencies {
implementation("com.fasterxml.jackson.core:jackson-databind:2.10.4")
}
子模块common-module/build.gradle.kts
dependencies {
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.10.4")
}
我想声明一个变量,并将这些依赖关系的版本分配为一个值,并且只在模块上重用它。比如implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-csv:${jacksonVersion}")
.
我该怎么做呢?
这个问题最现代的、类型安全的解决方案是使用版本目录。
- 更新Gradle到至少7.5.1.
gradle/libs.versions.toml
:
[versions]
jackson = "2.12.5"
[libraries]
jackson-databind = { module = "com.fasterxml.jackson:jackson-databind", version.ref = "jackson" }
jackson-dataformat-csv = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-csv", version.ref = "jackson" }
- 在所有子项目中添加
implementation(libs.jackson.dataformat.csv)
等依赖项