本来,想用jar命令来快速替换war包的文件的,但是,发现Ubuntu中没有装Java,懒癌发作,遂使用zip与unzip命令代替。
zip:压缩命令
格式: zip [-选项] *.war 要压缩的文件 例子: zip -m app.war /WEB-INF/classes/com/app/business/service/platform/impl/abc.class
选项:
-m: 不检查而替换原有文件。网上解释:将文件压缩而加入压缩文件后,删除原有文件。即把文件移动到压缩文件中。
unzip:解压命令
格式: unzip [-选项] *.war 要解压的文件 例子: unzip -o app.war WEB-INF/classes/com/app/business/service/platform/impl/abc.class
---> unzip app.war WEB-INF/classes/com/app/business/service/platform/impl/abc.class
选项:
-l (list): 不解压而查看war包中的文件
-v : 执行是时显示详细的信息
-f (fresh): 覆盖原有文件
-o (overwrite): 强制覆盖,不提示是否覆盖
-u (update): 已有的,覆盖;未有的,新建
-n (never): 不覆盖已有文件
包:app.war
要替换的文件:/WEB-INF/classes/com/app/business/service/platform/impl/abc.class
步骤:(颜色为命令,非颜色为结果)
1. 使用unzip、grep命令将war包中要替换的文件先找出来,将路径一并解压出来
a. unzip -l app.war |grep abc.class ---> unzip -v app.war |grep abc.class / unzip -lv app.war |grep abc.class
49974 2019-08-02 02:28 WEB-INF/classes/com/app/business/service/platform/impl/abc.class
b. unzip app.war WEB-INF/classes/com/app/business/service/platform/impl/abc.class
Archive: app.war
inflating: WEB-INF/classes/com/app/business/service/platform/impl/abc.class
2. 使用move/cp命令将新文件替换解压出来的旧文件
cp abc.class WEB-INF/classes/com/app/business/service/platform/impl/
3. 使用zip命令将路径下的新文件打包入war包
zip -m app.war WEB-INF/classes/com/app/business/service/platform/impl/abc.class
updating: WEB-INF/classes/com/tmri/rural/business/service/platform/impl/AbstractBusinessEntityManagementServiceImpl.class (deflated 60%)
当然,还可以使用md5sum命令验证文件的是否更改。