如何在“jav xvf”之后重新打包jar?

flmtquvp  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(434)

我用

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?

gblwokeq

gblwokeq1#

如果您的目标是只更新 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/
xriantvc

xriantvc2#

因为您使用的是选项:-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

相关问题