Spring Boot 项目打包为 JAR 后修改配置文件主要有以下几种方法,可根据实际需求选择:
一、外部配置文件覆盖法
-
同级目录配置文件
将application.yml
或application.properties
文件放置在与 JAR 包同级的目录下,Spring Boot 默认会优先加载外部配置文件覆盖 JAR 包内部的配置45。
目录结构示例:├── your-app.jar
└── application.yml -
自定义配置目录
在 JAR 包同级目录下创建config
文件夹,将配置文件放入其中,同样会被自动加载5。
目录结构示例:├── your-app.jar
└── config
└── application.yml
二、直接修改 JAR 包内配置文件
适用于需要修改打包后的 JAR 内部配置的场景:
-
解压-修改-重新打包
- 解压 JAR 包:
jar -xvf your-app.jar # 解压后生成 BOOT-INF/、META-INF/、org/ 目录:ml-citation{ref="1" data="citationList"}
- 修改配置:进入
BOOT-INF/classes/
目录,编辑application.yml
或application.properties
。 - 重新打包:
jar -cvfM0 your-app.jar BOOT-INF/ META-INF/ org/ # 注意保留原文件结构
- 解压 JAR 包:
-
快速替换单个文件
使用jar uf
命令直接替换配置文件无需解压全部内容:
jar xf your-app.jar BOOT-INF/classes/application.yml # 提取文件
vim BOOT-INF/classes/application.yml # 修改文件
jar uf your-app.jar BOOT-INF/classes/application.yml # 更新 JAR 包
三、运行时指定外部配置
通过启动命令动态指定配置文件路径,适合多环境配置分离:
java -jar your-app.jar --spring.config.location=file:/path/to/application.yml
或结合 classpath
和外部路径:
java -jar your-app.jar --spring.config.location=classpath:/,file:./config/:ml-citation
四、使用 VIM 直接编辑 JAR 包(高级)
通过 VIM 直接修改 JAR 包文件(无需解压):
vim your-app.jar # 进入压缩包编辑模式
使用 /
搜索配置文件路径(如 BOOT-INF/classes/application.yml
),修改后保存退出。
注意事项:
- 备份原 JAR 包:直接修改或重新打包前建议备份原始文件。
- 配置优先级:外部配置文件 >
config
目录 > JAR 包内部配置。 - 生产环境谨慎操作:直接修改 JAR 包可能破坏签名或依赖结构,建议优先使用外部配置文件。