kotlin - 如何在 Kotlin DSL 的子项目中重用依赖版本?
问题描述
我有一个使用 Kotlin DSL 作为构建文件的多模块 Gradle 项目。在根内部有根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.2。
- 将此添加到您的
settings.gradle
orsettings.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)
像在所有子项目中一样添加依赖项。
推荐阅读
- c++ - 有没有办法用循环擦除两个给定的值?
- regex - 引号之间的井号
- python - 我无法使用 PythonKit 在 Xcode 11 中导入 Python 模块
- .net - IIS 中托管的应用程序在事件 id 12 和 9009 后停止
- python - 如何在“while”循环python 3中使用“or”和“not”
- python - Nan值的布尔索引
- scala - Future 上的惰性验证是否会阻止实际的数据库调用?
- javascript - jQuery 验证 - 在 Safari 中不验证日期,但在 Chrome 中验证
- python - 我无法使用 cv2.imwrite () 方法进行图像处理
- python - 如何在 Python 中为线性回归预处理字符串数据