如何在 Kotlin DSL 的子项目中重用依赖版本?
How to reuse dependency versions in subprojects for Kotlin DSL?
我有一个多模块 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}")
.
这样的东西
我该怎么做?
此问题最现代、类型安全的解决方案是使用 version catalogs。
- 将 Gradle 更新到 7.2。
- 将此添加到您的
settings.gradle
或 settings.gradle.kts
:
enableFeaturePreview("VERSION_CATALOGS")
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)
等依赖。
我有一个多模块 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}")
.
我该怎么做?
此问题最现代、类型安全的解决方案是使用 version catalogs。
- 将 Gradle 更新到 7.2。
- 将此添加到您的
settings.gradle
或settings.gradle.kts
:
enableFeaturePreview("VERSION_CATALOGS")
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)
等依赖。