• 如何使用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%免费
    所有你需要做的是,添加下面的微信,备注"免费报告"
     
     
    image
  • 相关阅读:
    [RxSwift教程]14、其他操作符:delay、materialize、timeout等
    [RxSwift教程]13、连接操作符:connect、publish、replay、multicast
    Java虚拟机类加载机制及双亲委派模式分析
    面试系列-如何设计一个类
    谈谈 MySQL 的 JSON 数据类型
    Java 多线程编程(2-异步中包含同步)
    还堵在高速路上吗?带你进入Scratch世界带你飞
    SQL Server SSIS相关介绍
    SQL Server开启READ_COMMITTED_SNAPSHOT
    SqlServer中select语句引起的死锁
  • 原文地址:https://www.cnblogs.com/chuanzhang053/p/16590952.html
Copyright © 2020-2023  润新知