替换war包中的⽂件
1.如果要替换的⽂件直接在war包的根⽬录(⼀级⽬录)下,直接使⽤jar uvf命令替换即可
如:替换a.war中b.xml⽂件
jar uvf a.l
2.如果要替换的⽂件在war包的⼆级及以下⽬录下,则需要以下步骤:
(1)使⽤jar tvf war名称 | grep ⽬标⽂件名查询出⽬标⽂件在war包中的⽬录
(2)使⽤jar xvf war名称⽬标⽂件名(copy上⾯查出的全路径) 将⽬标⽂件及所在war包中的⽬录解压到当前路径
(3)修改⽬标⽂件的内容,或者将要新的⽬标⽂件替换掉提取出来的⽬标⽂件
文件名提取(4)使⽤jar uvf war名称⽬标⽂件名(和步骤(2)中的⽬标⽂件名相同)将新⽬标⽂件替换到war包中
举例:替换opp.war包中的opp.properties⽂件
(1)# jar -tvf opp.war |grep opp.properties
6322 Thu Sep 29 12:29:16 CST 2016 WEB-INF/classes/opp.properties
(2)# jar -xvf opp.war WEB-INF/classes/opp.properties
已解压: WEB-INF/classes/opp.properties
# ll
-rw-r--r--. 1 opp  opp      4426 8⽉  20 10:43 opp.properties #新的opp.properties⽂件
-rw-rw-r--. 1 opp  opp  114896942 10⽉ 12 09:48 opp.war
drwxr-xr-x. 3 root root        20 12⽉ 28 10:29 WEB-INF #解压出来的opp.proerties⽂件(连带⽬录结构也解压出来了)(3)# cp opp.properties WEB-INF/classes/
cp:是否覆盖"WEB-INF/classes/opp.properties"? yes
(4)# jar -uvf opp.war WEB-INF/classes/opp.properties
正在添加: WEB-INF/classes/opp.properties(输⼊ = 4426) (输出 = 1892)(压缩了 57%)
附:jar的⽤法:
⽤法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
选项:
-c  创建新档案
-t  列出档案⽬录
-x  从档案中提取指定的 (或所有) ⽂件
-u  更新现有档案
-v  在标准输出中⽣成详细输出
-f  指定档案⽂件名
-m  包含指定清单⽂件中的清单信息
-n  创建新档案后执⾏ Pack200 规范化
-e  为捆绑到可执⾏ jar ⽂件的独⽴应⽤程序
指定应⽤程序⼊⼝点
-0  仅存储; 不使⽤任何 ZIP 压缩
-P  保留⽂件名中的前导 '/' (绝对路径) 和 ".." (⽗⽬录) 组件
-M  不创建条⽬的清单⽂件
-i  为指定的 jar ⽂件⽣成索引信息
-C  更改为指定的⽬录并包含以下⽂件
如果任何⽂件为⽬录, 则对其进⾏递归处理。
清单⽂件名, 档案⽂件名和⼊⼝点名称的指定顺序
与 'm', 'f' 和 'e' 标记的指定顺序相同。
⽰例 1: 将两个类⽂件归档到⼀个名为 classes.jar 的档案中:
jar cvf classes.jar Foo.class Bar.class
⽰例 2: 使⽤现有的清单⽂件 'mymanifest' 并
将 foo/ ⽬录中的所有⽂件归档到 'classes.jar' 中:        jar cvfm classes.jar mymanifest -C foo/ .