Spring Boot多子项目:如何在Gradle根项目全局设置环境变量?
在Gradle根项目中为所有任务配置跨子项目共享的环境变量
方法一:通过gradle.properties定义变量并全局注入
- 在根项目根目录创建
gradle.properties文件,存放共享变量:
# gradle.properties serviceUrl=https://your-target-url.com
- 在根
build.gradle中,为所有子项目的任务统一设置环境变量:
// 根build.gradle allprojects { // 为所有JavaExec类型任务(包括Spring Boot的bootRun)设置环境变量 tasks.withType(JavaExec) { environment 'url', project.property('serviceUrl') } }
方法二:直接在根build.gradle中定义变量并全局配置
如果变量无需外部配置,可直接在根构建脚本中定义并全局传递:
// 根build.gradle def sharedServiceUrl = 'https://your-target-url.com' allprojects { // 为所有任务配置环境变量(按需可限制任务类型) tasks.configureEach { environment 'url', sharedServiceUrl } }
补充:确保资源文件占位符被替换
如果你的properties.yml中的${url}需要在构建阶段被替换为实际值,需开启资源过滤。在根build.gradle中统一配置子项目的资源处理:
// 根build.gradle subprojects { processResources { // 替换资源文件中的占位符,优先使用项目属性,其次环境变量 expand(project.properties + System.getenv()) } }
这样配置后,无论是启动bootRun任务还是打包项目,子项目的yml文件都会正确读取到共享的url变量值。
内容的提问来源于stack exchange,提问作者MiguelSlv
相关产品推荐
相关产品推荐

