如何在Gradle依赖配置中直接使用版本目录的版本号?
在Gradle 7.5中复用Version Catalog的版本号配置spring-test依赖
你完全可以直接在依赖块中引用Version Catalog里定义的版本号,不需要把spring-test添加到catalog的[libraries]块中,具体实现方式如下:
1. 确认Version Catalog的版本定义
首先确保你的libs.versions.toml已经在[versions]块中定义了Spring的版本:
[versions] spring = "6.0.0-M5" [libraries] # 这里只维护生产环境的Spring依赖 spring-core = { group = "org.springframework", name = "spring-core", version.ref = "spring" } spring-context = { group = "org.springframework", name = "spring-context", version.ref = "spring" } [bundles] spring = ["spring-core", "spring-context"]
2. 在构建脚本中直接引用版本号
Groovy DSL 写法
在build.gradle的依赖块中,直接指定spring-test的group和name,同时通过version.ref复用catalog里的Spring版本:
dependencies { // 生产依赖使用bundle implementation libs.bundles.spring // 测试依赖直接引用catalog中的Spring版本,无需在libraries中定义 testImplementation 'org.springframework:spring-test', version: { ref 'spring' } }
或者用更简洁的写法:
testImplementation group: 'org.springframework', name: 'spring-test', version: versions.spring
Kotlin DSL 写法
如果使用Kotlin DSL,在build.gradle.kts中可以这样配置:
dependencies { implementation(libs.bundles.spring) testImplementation("org.springframework", "spring-test") { version { strictly(versions.spring.get()) } } }
原理说明
Gradle会自动将Version Catalog中[versions]块的定义生成为versions对象(Groovy)或versions属性(Kotlin),你可以直接在依赖配置中引用这些版本值,无需将测试依赖纳入生产依赖的[libraries]块中,这样既避免了版本号重复编写,也能保持生产与测试依赖的目录分离。
内容的提问来源于stack exchange,提问作者Shorn
相关产品推荐
相关产品推荐

