如何从build.gradle文件中获取版本变量到Java Spring Boot控制器?
如何从build.gradle中获取版本变量
我来帮你梳理两种常见的场景,看你对应哪种需求:
场景1:在build.gradle脚本内部使用版本变量
如果是你自己在Gradle脚本里定义的版本变量,比如这样:
// 自定义变量 def appVersion = "1.2.3" // 或者用Gradle自带的version属性 version = "1.2.3"
在脚本内部直接引用就行:
- 自定义变量直接用
appVersion - Gradle自带的
version属性,用project.version或者直接version都可以
举个例子,在任务里打印版本:
task printAppVersion { doLast { println "当前应用版本: ${appVersion}" println "当前项目版本: ${version}" } }
场景2:在应用程序中获取Gradle里的版本变量(类似从application.properties取值的方式)
如果是想在Java/Spring Boot代码里获取Gradle中定义的版本,你可以通过Gradle把版本注入到配置文件,之后用熟悉的方式读取:
- 首先在build.gradle里定义版本:
// 方式1:用Gradle自带的version属性 version = "1.2.3" // 方式2:自定义扩展变量 ext { appVersion = "1.2.3" }
- 在你的
application.properties里添加占位符:
# 如果用Gradle自带的version app.version=${version} # 如果用自定义的appVersion变量 app.version=${appVersion}
- 配置Gradle的
processResources任务来替换占位符:
processResources { // 替换配置文件中的占位符 expand(project.properties) // 如果用自定义扩展变量,也可以显式传入 // expand(appVersion: project.ext.appVersion) }
这样构建项目时,Gradle会自动把占位符替换成实际的版本值,之后你就可以像之前一样用@Value("${app.version}")在代码里获取这个版本了。
补充:如果是Spring Boot项目,其实还有更简便的方式——Spring Boot Gradle插件会自动把项目的version属性暴露为环境变量,你直接在代码里用@Value("${version}")就能获取到Gradle中设置的版本值,不需要额外配置processResources。
内容的提问来源于stack exchange,提问作者Mario560
相关产品推荐
相关产品推荐

