war包內更新文件


 

 

感謝@這個博客提供的分享

親測有效,原文:

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后面使用選項時,可以帶-也可以不帶-,作用是一樣的。
View Code

注意:看命令原文是Linux系統下的,有如下亮點:

1第一步查找指定文件路徑時grepwindows下可能會報‘grep不是內部或外部命令**雲雲’改用findstr就行

2第三步覆蓋文件時windows系統下的命令是move,不是cp

示例:將zhangTest移動到war包下WEB-INF\classes\controller目錄下進行替換

 

 

 

 移動之后多了個WEB-INF(第2步就已經解壓出來),原zhangTest.class不見了,替換進了war包中

可以看到war包中的時間變了

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM