背景
一般情况下,我们通过某种工具(比如Maven)生成
xxx.jar
或者
xxx.war
文件。有时希望修改里面的一个文件,比如
xxx.class
文件,又或者是一个配置文件,但又不想重新build整个项目,只想把修改后的文件塞进jar包或者war包,替换原先的文件。
方法
jar包和war包做法一样,以下以jar包为例,war包同理。
具体步骤为:
- 解包
- 替换
- 打包
解包
首先把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包里的文件替换。