1. 程式人生 > >替換war包中的檔案

替換war包中的檔案

原文:https://blog.csdn.net/wuawua1/article/details/53906700

1.如果要替換的檔案直接在war包的根目錄(一級目錄)下,直接使用jar uvf命令替換即可

如:替換a.war中b.xml檔案

jar uvf a.war b.xml

注:b.xml需要和a.war在同一個目錄下。

標題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/ .

注:jar後面使用選項時,可以帶-也可以不帶-,作用是一樣的。