如何通过Gradle processResources仅替换Spring Boot application.yml的version属性
仅用Gradle替换application.yml中的version变量方案
实现思路
Gradle默认的processResources会替换所有${xxx}格式变量,我们可以通过精准指定替换属性,只处理version变量,让${SPRING_PROFILES_ACTIVE}这类需要Kubernetes注入的变量保持原样。
具体配置
在项目的build.gradle(Groovy)或build.gradle.kts(Kotlin)中修改processResources任务:
Groovy DSL 配置
processResources { // 仅对application.yml文件生效 filesMatching('application.yml') { // 只传入version属性进行替换,其他${}变量不处理 expand(version: project.version) } }
Kotlin DSL 配置
tasks.processResources { filesMatching("application.yml") { expand(mapOf("version" to project.version)) } }
关键说明
filesMatching:限定作用范围为application.yml,避免误改其他资源文件expand方法:仅传入version属性,Gradle只会识别并替换${version},其他${xxx}格式内容会原封不动保留,确保后续Kubernetes能正常注入环境变量。
验证步骤
执行Gradle构建后,查看build/resources/main/application.yml:
spring.application.version会被替换为gradle.properties中定义的0.1.0${SPRING_PROFILES_ACTIVE}等变量保持原有格式不变
内容的提问来源于stack exchange,提问作者sdbol
相关产品推荐
相关产品推荐

