我用
jar xvf my.jar
打开它,我得到了
BOOT-INF META-INF org
META-INF有三个部分:
MANIFEST.MF maven spring-configuration-metadata.json
我修改了org中的application.properties,然后我想将它重新打包到my.jar中。
我用过:
jar cvfm my.jar META-INF/MANIFEST.MF BOOT-INF/ org
但是maven spring-configuration-metadata.json
没有打包到my.jar中,那么如何重新打包my.jar?
答案 0 :(得分:0)
因为您正在使用选项:-f,-m" my.jar"是-f和META-INF / MANIFEST.MF的名称是-m的名称,因此" BOOT-INF / org"是要打包的文件(即未指定META-INF)。
尝试:jar cvfm my.jar META-INF/MANIFEST.MF BOOT-INF META-INF org
答案 1 :(得分:0)
如果您的目标是仅更新META-INF/spring-configuration-metadata.json
的内容,则无需提取整个存档。
假设您的app.jar
看起来像这样
jar tvf app.jar
0 Tue Sep 05 07:54:02 CEST 2017 META-INF/
68 Tue Sep 05 07:54:02 CEST 2017 META-INF/MANIFEST.MF
0 Tue Sep 05 07:54:02 CEST 2017 org/
0 Tue Sep 05 07:54:02 CEST 2017 META-INF/maven/
3 Tue Sep 05 07:54:02 CEST 2017 META-INF/spring-configuration-metadata.json
0 Tue Sep 05 07:54:02 CEST 2017 BOOT-INF/
仅提取META-INF/spring-configuration-metadata.json
jar xf app.jar META-INF/spring-configuration-metadata.json
提取子目录META-INF
中当前目录中的文件。
更新文件
echo bar >> META-INF/spring-configuration-metadata.json
更新app.jar
jar uf app.jar META-INF/spring-configuration-metadata.json
检查app.jar
jar tvf app.jar
0 Tue Sep 05 07:54:02 CEST 2017 META-INF/
68 Tue Sep 05 07:54:02 CEST 2017 META-INF/MANIFEST.MF
0 Tue Sep 05 07:54:02 CEST 2017 org/
0 Tue Sep 05 07:54:02 CEST 2017 META-INF/maven/
8 Tue Sep 05 07:54:16 CEST 2017 META-INF/spring-configuration-metadata.json
0 Tue Sep 05 07:54:02 CEST 2017 BOOT-INF/