jar命令淺析

jar命令淺析

 JAR文件的全稱是Java Archive File,意思是java檔案文件,一般JAR文件是一種壓縮文件,而且與常見的Zip文件兼容,二者的區別即是JAR擁有清單文件 (META-INF/MANIFEST.MF),這個文件是生成JAR文件時自動建立的。
 jar在安裝JDK時會自動安裝,在bin目錄裏面,Windows裏是jar.exe,Lunix裏是jar。
 首先輸入jar命令,系統會自動提示jar命令的用法。(運行dos命令使用的是Cmder軟件,代碼前面的「λ」不用輸入)java

λ 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文件結構類型

舉例: ide

原文件目錄結構爲:ui

****
    ├ Foder
    |     ├file1
    |     ├file2
    └ file3

則其生成的jar文件構內部目錄結構:idea

****.jar
    ├ META-INF
    │ └ MANIFEST.MF(清單文件)
    ├ Foder
    |     ├file1
    |     └file2
    └ file3

命令實例講解

1.jar cf .............

建立jar文件
語法以下:命令行

jar cf ****.jar file1 file2 ....

 建立****.jar,並將file1,file2 (jar命令能夠指定多個文件) 添加到****.jar包中,如****.jar存在,則覆蓋。unix

jar cf ****.jar folderName

 建立****.jar,並將folderName文件夾下全部文件添加到 ****.jar包中,如****.jar存在,則覆蓋。code

2.jar cvf .............

建立jar文件,而且顯示壓縮過程
會輸出相似下面的信息。xml

已添加清單
正在添加: lzj.iml(輸入 = 81) (輸出 = 75)(壓縮了 7%)
........

語法與第一個命令類似遞歸

3.jar cvfM .............

建立jar文件,但不添加清單文件,而且顯示壓縮過程.
會輸出相似下面的信息。索引

正在添加: lzj.iml(輸入 = 81) (輸出 = 75)(壓縮了 7%)
........

語法與第一個命令類似

4.jar cvfm ...........

建立jar文件,自定義清單文件內容,而且顯示壓縮過程.
語法:

jar cvfm ****.jar ****.mf(大小寫皆可) FileName

在原有清單文件基礎上增長****.mf文件的內容(不論名稱是什麼均可以,可是jar包只認manifest.MF,因此係統會自動完成轉化)
清單文件可直接編輯,但有相應的內容格式要求,這裏不作過多介紹。

5.jar tf ............

查看jar包文件。
例如

λ jar tf lzj.jar
META-INF/
META-INF/MANIFEST.MF
lzj.iml

若是JAR包內文件很是多可以使用(命令行窗口顯示的行數有限)
jar tf lzj.jar > lzj.txt
此時將再也不返回信息,文件夾下會生成一個txt文件,裏面保存着相應的信息。
加v,詳細的查看jar包文件
即jar tvf ............
例如

λ jar tvf lzj.jar
     0 Sat Jul 20 16:18:02 CST 2019 META-INF/
    69 Sat Jul 20 16:18:02 CST 2019 META-INF/MANIFEST.MF
    81 Sun Dec 16 16:13:00 CST 2018 lzj.iml

也可生成txt文件。

6.jar xf ................

解壓縮,將jar文件解壓到當前目錄。不返回信息。
加v,即jar xvf ................
系統會顯示詳細的解壓過程
例如

λ jar xvf lzj.jar
  已建立: META-INF/
  已解壓: META-INF/MANIFEST.MF
  已建立: lzj/
  已建立: lzj/.idea/
  已解壓: lzj/.idea/compiler.xml
  已解壓: lzj/.idea/encodings.xml
  已解壓: lzj/.idea/misc.xml
  ................

7.jar uf ..............

語法
jar uf ****.jar file
將文件加入到jar文件中,若是有同名文件則替。
加v一樣能夠詳細看到過程
例如

λ jar uvf lzj.jar pom.xml
正在添加: pom.xml(輸入 = 502) (輸出 = 267)(壓縮了 46%)

jar命令擴展

jar i ****.jar

爲指定的jar文件生成索引,生成在META-INF中名稱爲INDEX.LIST。

相關文章
相關標籤/搜索