You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle版本目录:多TOML文件间共享版本定义的实现方案

如何在Gradle版本目录的独立文件间共享版本定义?

当前实现

TOML文件

// gradle/tools.versions.toml
[versions]
kotlin = "1.7.10"
gradle = "7.2.1"
maven = "2.0"
// gradle/libs.versions.toml
[versions]
kotlin = "1.7.10"
[libraries]
kotlin = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" }

版本目录配置

versionCatalogs {
    // 希望能在此定义版本并在TOML文件中使用...
    // val kotlin = "1.7.10"

    create("tools") {
        from(files("gradle/tools.versions.toml"))
    }

    create("libs") {
        from(files("gradle/libs.versions.toml"))
    }

    // 其他配置...
}

问题需求

希望保留独立文件的前提下,在Gradle版本目录配置中共享版本定义;不考虑buildSrc或复合构建方案,仅使用Gradle版本目录实现,也可接受将TOML文件转为Gradle.kts文件。

解决方案

方案1:TOML文件间通过from引用共享版本

Gradle支持在版本目录的TOML文件中通过from字段引入其他TOML文件的内容,我们可以抽离公共版本到单独文件,再让其他TOML文件引用它:

  1. 创建公共版本文件 gradle/common.versions.toml:
// gradle/common.versions.toml
[versions]
kotlin = "1.7.10"
  1. 修改tools.versions.toml引入公共版本:
// gradle/tools.versions.toml
from = "./common.versions.toml"

[versions]
gradle = "7.2.1"
maven = "2.0"
  1. 修改libs.versions.toml引入公共版本:
// gradle/libs.versions.toml
from = "./common.versions.toml"

[libraries]
kotlin = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" }

原有的versionCatalogs配置无需修改,Gradle会自动合并引入的公共版本内容。

方案2:转为Gradle.kts文件实现共享

如果想改用.kts文件定义版本目录,可通过apply引入公共配置:

  1. 创建公共版本文件 gradle/common.versions.kts:
versionCatalog {
    version("kotlin", "1.7.10")
}
  1. 修改tools.versions.kts引入公共配置:
apply(from = "./common.versions.kts")

versionCatalog {
    version("gradle", "7.2.1")
    version("maven", "2.0")
}
  1. 修改libs.versions.kts引入公共配置:
apply(from = "./common.versions.kts")

versionCatalog {
    library("kotlin", "org.jetbrains.kotlin", "kotlin-stdlib-jdk8").versionRef("kotlin")
}
  1. 版本目录配置保持不变:
versionCatalogs {
    create("tools") {
        from(files("gradle/tools.versions.kts"))
    }

    create("libs") {
        from(files("gradle/libs.versions.kts"))
    }
}

两种方案都能在保留独立文件的同时实现版本共享,且完全基于Gradle版本目录功能,无需依赖其他方案。

内容的提问来源于stack exchange,提问作者prom85

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:30:52