如何使用jar命令替换war中的文件?
问你一个问题:这里有一个war包,如果要更新其中的一个文件,你会怎么做?
解压,替换,重新压缩?
接下来的部分,提供给你一个更加简单、方便、有效的方法。
没错,使用jdk工具包中的jar命令,直接对war包中的文件进行替换。下面是一个示例,演示给你看,如何一步一步的通过jar命令,实现对war包中的某个文件进行替换:
首先,用一个演示的war,这里是jenkins.war
[root@nctest-snap-test-02 practises]# ls
jenkins.war
1、列出war中的内容
先看下jenkins.war中的内容:
jar -tvf jenkins.war
选择一个war中的文件,比如:txt文件:
[root@nctest-snap-test-02 practises]# jar -tvf jenkins.war | grep combobox-readme
1392 Wed Jul 28 14:13:10 CST 2021 scripts/combobox-readme.txt
[root@nctest-snap-test-02 practises]#
文件大小,1392字节。
2、提取某个war包中的文件
选好这个文件之后,我们把它提取到本地
[root@nctest-snap-test-02 practises]# jar -xvf jenkins.war scripts/combobox-readme.txt
inflated: scripts/combobox-readme.txt
[root@nctest-snap-test-02 practises]# ls -l
total 72520
-rw-r--r-- 1 root root 74258876 Jul 29 2021 jenkins.war
drwxr-xr-x 2 root root 33 Aug 16 10:59 scripts
[root@nctest-snap-test-02 practises]# ls -l scripts/
total 4
-rw-r--r-- 1 root root 1392 Jul 28 2021 combobox-readme.txt
[root@nctest-snap-test-02 practises]#
OK,文件已经成功提取到本地了。
接下来,修改这个文件······
#在文件的结尾加上1行
[root@nctest-snap-test-02 scripts]# tail -n 1 combobox-readme.txt
# For Test #1
#文件的大小由1392增加到1407
[root@nctest-snap-test-02 scripts]# ls -l combobox-readme.txt
-rw-r--r-- 1 root root 1407 Aug 16 11:00 combobox-readme.txt
[root@nctest-snap-test-02 scripts]#
3、更新war中的某个文件
原材料有了,现在,就展示下,怎么用这个去替换war包中的同位置、同名的文件
方法非常的简单······
jar -uvf jenkins.war scripts/combobox-readme.txt
看命令是执行成功了,那到底有没有真的替换成功呢?
验证下不就知道了
[root@nctest-snap-test-02 practises]# jar -tvf jenkins.war | grep combobox-readme
1407 Tue Aug 16 11:00:24 CST 2022 scripts/combobox-readme.txt
[root@nctest-snap-test-02 practises]#
war包中的这个文件,确实替换成功了,文件的大小已经发生了变化。当然······你可以再次提出这个文件进行内容的验证。
OK,到这里,你是不是对使用jar命令,替换war包中某个文件的过程已经清晰了呢?
4、向war包中增加文件
你现在是不是又有一个疑问了,那要增加一个war中原来没有的文件,该怎么办?
非常的简单。
创建一个测试文件(注意,这个文件在war中可是没有的)
[root@nctest-snap-test-02 practises]# mkdir test01
[root@nctest-snap-test-02 practises]# touch test01/test01.txt
[root@nctest-snap-test-02 practises]# echo test >> test01/test01.txt
还是使用更新命令
jar -uvf jenkins.war test01/test01.txt
到底有没有,增加文件、目录成功?
[root@nctest-snap-test-02 practises]# jar -tvf jenkins.war | grep test01
5 Tue Aug 16 11:08:38 CST 2022 test01/test01.txt
[root@nctest-snap-test-02 practises]#
你还怀疑吗?事实让你眼见为实。
当然,你可以加入其他的文件,只要注意:在war包中的什么位置加文件,文件在本地就放在什么路径上。直接和war同级目录的,就是war中的根目录。
一份免费报告
揭示怎样仅仅通过阅读文章,就能每天赚到5000元现金!
该报告100%免费
所有你需要做的是,添加下面的微信,备注"免费报告"
揭示怎样仅仅通过阅读文章,就能每天赚到5000元现金!
该报告100%免费
所有你需要做的是,添加下面的微信,备注"免费报告"