Spring Boot 如何把 application.yml 放在 JAR 外部
如果部署环境需要各自的配置,可以先排除资源文件,再由 Spring Boot 在启动时读取外部目录。排除打包资源和指定运行时配置位置是两个步骤。
检查打包内容
在 Maven 的 build/resources 中为 src/main/resources 配置 excludes,将 application.yml 加入排除项。检查是否还存在 application.yaml、application.properties 或按环境命名的变体。运行 jar tf app.jar,确认目标文件没有进入 BOOT-INF/classes。
在运行时指定配置
例如将文件放在 /etc/myapp/application.yml,并启动 java -jar app.jar --spring.config.additional-location=file:/etc/myapp/。目录位置以斜线结束。additional-location 保留默认搜索位置,location 则替换默认位置。
验证加载行为
在外部配置中使用一个无敏感信息的标记值并检查程序行为。如果部署要求必须存在该目录,不要加 optional:。不要把生产密钥写入构建产物,也不要把配置内容打印到日志中。
