替换jar包或者war包里的文件

  • Post author:
  • Post category:其他




背景

一般情况下,我们通过某种工具(比如Maven)生成

xxx.jar

或者

xxx.war

文件。有时希望修改里面的一个文件,比如

xxx.class

文件,又或者是一个配置文件,但又不想重新build整个项目,只想把修改后的文件塞进jar包或者war包,替换原先的文件。



方法

jar包和war包做法一样,以下以jar包为例,war包同理。

具体步骤为:

  1. 解包
  2. 替换
  3. 打包



解包

首先把jar包解开,一般来说,系统上的解压工具都可以使用,比如

unzip xxx.jar

注意解压后的文件目录结构,例如:jar包的内容为:

xxx.jar
  |
  |-- META-INF
  |-- org

则解压后,

META-INF



org

应该和

xxx.jar

处于同一目录下。

xxx.jar
META-INF
org

有些解压工具(比如Mac的

Archive Utility

),会多生成一级

xxx

目录,会给下一步带来麻烦。

xxx.jar
xxx
  |-- META-INF
  |-- org

所以尽量使用

unzip

,别用

Archive Utility



替换

这一步没啥可说的,直接找到目标文件,替换即可。



打包

无需重新生成整个jar包文件,只需使用

jar

命令把目标文件再塞回jar包,比如:

jar -uvf xxx.jar  org/....../xxx.class

由于目标文件和原先该文件的路径一样,所以会覆盖原先的文件,从而实现jar包里的文件替换。



版权声明:本文为duke_ding2原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。