libs.versions.toml不能被根项目共享
include子项目里的libs.versions.toml不能被根项目直接共享,最好是在在根项目的libs.versions.toml明确声明库版本,使用依赖传递库存在着隐式风险。
通常 Version Catalog 文件存放在 gradle/ 子目录下,即 gradle/libs.versions.toml
正确的配置方式
方案 A:使用默认约定(推荐)
Gradle 7.4+ 版本默认会自动查找并加载 gradle/libs.versions.toml 文件,并将其命名为 libs。你通常不需要在 settings.gradle 中编写任何 versionCatalogs 配置代码,只要文件路径正确即可。
- 文件位置 :
<project-root>/gradle/libs.versions.toml - settings.gradle.kts:无需额外配置。
- build.gradle.kts :直接使用
implementation(libs.xxx)。
方案 B:显式自定义配置
如果需要显式指定文件路径(例如文件不在默认位置,或者你想自定义 catalog 名称),应使用 create 方法。
Kotlin DSL (settings.gradle.kts):
Kotlin
dependencyResolutionManagement {
versionCatalogs {
// 创建一个名为 "libs" 的 catalog
create("libs") {
// 指定 toml 文件的路径
// 注意:如果文件在 gradle 目录下,路径应为 "gradle/libs.versions.toml"
from(files("gradle/libs.versions.toml"))
}
// 如果有其他 catalog,可以继续 create
// create("testLibs") {
// from(files("gradle/test-libs.versions.toml"))
// }
}
}
Groovy DSL (settings.gradle):
Groovy
dependencyResolutionManagement {
versionCatalogs {
create("libs") {
from(files("gradle/libs.versions.toml"))
}
}
}