linux系列之-jar包文件替换
1.书写背景相信大家都碰到过项目发包,因为某种小问题需要重新发包,但是这种改动非常小,网络不好的情况下发包啥的相当耗时,特别是网络不好,包又特别大的时候,那就更加难受了,我想着要是直接替换jar包里面的某个文件那不是,省时省力,于是查阅了一下资料,果真可以完美替换。2.命令介绍jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名…其中{ctxu...
1.书写背景
相信大家都碰到过项目发包,因为某种小问题需要重新发包,但是这种改动非常小,网络不好的情况下发包啥的相当耗时,特别是网络不好,包又特别大的时候,那就更加难受了,我想着要是直接替换jar包里面的某个文件那不是,省时省力,于是查阅了一下资料,果真可以完美替换。
2.命令介绍
jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名…
其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。
-c 创建一个jar包
-t 显示jar中的内容列表
-x 解压jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v 生成详细的报造,并输出至标准设备
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)
-0 产生jar包时不对其中的内容进行压缩处理
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
-i 为指定的jar文件创建索引文件
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
3.操作步骤
步骤如下:
如果要替换的文件在jar包的二级及以下目录下,则需要以下步骤:
(1)使用jar tvf jar名称 | grep 目标文件名 查询出目标文件在war包中的目录
(2)使用jar xvf jar名称 目标文件名(copy上面查出的全路径) 将目标文件及所在war包中的目录解压到当前路径
(3)修改目标文件的内容,或者将要新的目标文件替换掉提取出来的目标文件
(4)使用jar uvf jar名称 目标文件名(和步骤(2)中的目标文件名相同) 将新目标文件替换到 jar包中
4.操作命令
例如:我的项目文件在/opt/project文件夹下面
- 查找目标文件
[root@instance-n4r06itt project]# jar tvf faw-ca-api-1.0.jar | grep OpenSSLService.class
3563 Wed Jan 15 10:33:18 CST 2020 BOOT-INF/classes/com/faw/ca/api/service/OpenSSLService.class
- 解压目标文件
[root@instance-n4r06itt project]# jar -xvf faw-ca-api-1.0.jar BOOT-INF/classes/com/faw/ca/api/service/OpenSSLService.class
inflated: BOOT-INF/classes/com/faw/ca/api/service/OpenSSLService.class
[root@instance-n4r06itt project]# ll
total 98240
drwxr-xr-x 3 root root 4096 Mar 9 20:05 BOOT-INF
-rw-r--r-- 1 root root 100585648 Mar 9 20:02 faw-ca-api-1.0.jar
- 覆盖文件到指定文件夹
[root@instance-n4r06itt project]# cp OpenSSLService.class BOOT-INF/classes/com/faw/ca/api/service/
cp: overwrite ‘BOOT-INF/classes/com/faw/ca/api/service/OpenSSLService.class’? Y
- 按照路径覆盖到jar包
[root@instance-n4r06itt project]# jar -uvf faw-ca-api-1.0.jar BOOT-INF/classes/com/faw/ca/api/service/OpenSSLService.class
adding: BOOT-INF/classes/com/faw/ca/api/service/OpenSSLService.class(in = 3960) (out= 1548)(deflated 60%)
5.验证结果
将jar包拷贝到本地进行验证,打开jar包的工具用jd-jui就行。
替换之前代码
替换之后代码:
以后碰到这种小改动就省事多了,哈哈。
更多推荐
所有评论(0)