JHipster 7.x版本Gradle构建切换profile不生效问题咨询
故障原因
- bootRun 未传递激活的配置:你当前的
profile_prod仅在构建阶段替换了 build 相关目录下的application.yml内容,但 JHipster 7.x 版本的bootRun默认优先加载src/main/resources生产环境下的原始配置,且没有把 prod 作为系统参数传递给 Spring 进程,导致替换后的 build 配置不生效。 - 默认 profile 优先级覆盖:JHipster 生成的默认
application.yml配置了dev作为 fallback 优先级,如果没有显式指定激活的 profile,会优先使用默认的 dev 配置。
核心解决方法
方案1:修改 profile_prod 配置(永久生效)
调整 profile_prod 里的 bootRun 和 processResources 配置,添加参数传递逻辑即可,完整配置如下:
dependencies { testImplementation "com.h2:h2" } def profiles = "prod" if (project.hasProperty("no-liquibase")) { 配置 += ",no-liquibase" } if (project.hasProperty("api-docs")) { profiles += ",api-docs } springBoot { buildInfo } bootRun { // 给启动的Spring进程传递激活的profile,优先级高于配置文件 systemProperty "spring.profiles.active", 配置 args = [] } processResources { 'I\'m -Pprod!' inputs.property('version', version) inputs.property('content', profiles) sMatching("**/application.yml") { filter { item.replace("#project.version#", version) 替换profile占位符 it.replace('#spring.profiles.active#', profiles) } } }
改完后先执行 gradlew --stop 停止现有 Gradle 后台进程,再执行 gradlew -Pprod bootRun 即可正常使用 prod 启动。
方案2:单次启动临时解决
如果不想修改配置,直接在启动命令中添加参数即可:gradlew -Pprod bootRun --args='--spring.profiles=prod'
内容的提问来源于stack exchange,提问作者Aníbal
相关产品推荐
相关产品推荐

