关于 spring boot 打包的疑惑

2020-03-20 17:21:11 +08:00
 singerll

大概懂一点 java (非研发),发现一个现象,为什么用压缩软件在 jar 包里面新增一个 application-dev. yml 文件(原来没有),并在 app. yml

中指定它,jar 包无法正常运行。maven 打包时具体都做了什么呢

2834 次点击
所在节点    Java
6 条回复
akin
2020-03-20 17:25:43 +08:00
你是解压 jar 包,添加,然后再压缩成 jar 包吗?
akin
2020-03-20 17:43:03 +08:00
Springboot 读取核心配置文件( application.properties )的优先级为

Jar 包同级目录的 config 目录

Jar 包同级目录

classPath(即 resources 目录)的 config 目录

classpath 目录

上面是 springboot 默认去拿自己的核心配置文件的优先级,还有一种最高优先级的方式是项目启动时通过命令的方式指定项目加载核心配置文件,命令如下

java –jar -Dspring.config.location=xxx/xxx/xxxx.properties xxxx.jar
singerll
2020-03-20 18:06:54 +08:00
@akin 没有解压,就直接用压缩软件打开,然后拖进去新增的配置文件
akin
2020-03-20 21:08:32 +08:00
不能这么直接拖进去,要解压后重新打包 jar 包,重新生成 manifest.mf
其实不建议这改 jar 包,如果你要搞一个自己的 yml。正确的做法是我发的,在 jar 包同级别目录放一个配置文件,这是 spring boot 的配置文件读取优先级决定的。
cpc0wxj
2020-03-20 22:49:11 +08:00
直接把 yml 放在和 jar 包同级目录,启动参数什么的也不用加,默认就会读取同级目录的 yml,如果要修改 jar 包内部的建议还是重新打包吧
Aresxue
2020-03-23 10:24:23 +08:00
可以在原有基础上修改文件内容, 但直接删除或添加文件可能会导致意外的情况发生,因为打包的时候文件的结构信息也会被 maven 固定

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/654644

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX