解壓縮 zip、war 或 jar 檔案。
PatternSet 用於選取要從檔案庫中提取的檔案。如果未用 PatternSet,則會提取所有檔案。
資源集合 可用於選取要執行解壓縮的檔案庫檔案。Unjar
/Unwar
/Unzip
僅支援基於檔案系統的資源集合,其中包括 fileset、filelist、path 和 files。Untar
支援任意資源集合。在 Apache Ant 1.7 之前,僅支援 fileset
作為巢狀元素。
您可以使用巢狀 mapper 元素定義檔案名稱轉換。預設 mapper 為 identity mapper。
不會還原提取檔案的檔案權限。
untar
任務會辨識 GNU tar 使用的長路徑名稱項目。
請注意,在套用檔案的時區偏移計算時,不同的 ZIP 工具會以不同的方式處理時間戳。有些 ZIP 函式庫會將時間戳儲存為從檔案系統讀取的狀態,而其他函式庫會在讀取和寫入檔案時修改時間戳,以使所有時間戳使用相同的時區。由一個函式庫建立的 ZIP 檔案,在由另一個函式庫提取時,可能會提取出具有「錯誤時間戳」的檔案。
Ant 的 ZIP 類別使用與 InfoZIP 工具和 zlib 相同的演算法(時間戳會調整),Windows 的「壓縮資料夾」功能和 WinZIP 都不會變更時間戳。這表示,使用 unzip
任務處理由 Windows 的壓縮資料夾功能建立的檔案,可能會建立具有「錯誤」時間戳的檔案,如果您使用 Windows 的功能來提取由 Ant 產生的 ZIP 檔案,也會發生相同的情況。
屬性 | 說明 | 必要 |
---|---|---|
src | 要展開的檔案庫檔案。 | 是,除非使用 fileset |
dest | 要儲存展開檔案的目錄。 | 是 |
overwrite | 覆寫檔案,即使它們比檔案庫中的對應項目新(true|false)。 |
否;預設為 true |
compression | 注意:此屬性僅適用於 untar 任務。壓縮方法。允許的值為 none、 gzip、 xz和 bzip2。 |
否;預設為 none |
encoding | zip 檔案內檔案名稱使用的字元編碼。有關可能值的清單,請參閱 支援的編碼。 使用魔法值 native-encoding表示預設 JVM 字元編碼。 另請參閱 zip 任務頁面中的討論 |
否;預設為 unzip 的 UTF8和 untar 任務的預設 JVM 字元編碼 |
failOnEmptyArchive | 嘗試提取空檔案庫是否為錯誤。自 Ant 1.8.0 起 | 否;預設為 false |
stripAbsolutePathSpec | 在解壓縮檔案之前,Ant 是否應從解壓縮的檔案名稱中移除開頭的 /或 \字元。請注意,這會在套用 include /exclude 模式以及使用巢狀對應器(如果有)之前變更條目名稱。自 Ant 1.8.0 起 |
否;預設為 true自 Ant 1.10.4 起(在此之前預設為 false) |
scanForUnicodeExtraFields | 注意:此屬性不適用於 untar 任務。如果封存檔包含 Unicode 額外欄位,請使用它們來設定檔案名稱,並忽略指定的編碼。 另請參閱 zip 任務頁面中的討論 |
否;預設為 true |
allowFilesToEscapeDest | 是否允許解壓縮的檔案或目錄位於 dest 目錄之外。自 Ant 1.10.4 起 | 否,預設為 false,除非 stripAbsolutePathSpec 為 false,且條目的名稱以開頭路徑規格開頭。 |
<unzip src="${tomcat_src}/tools-src.zip" dest="${tools.home}"/>
<gunzip src="tools.tar.gz"/> <untar src="tools.tar" dest="${tools.home}"/>
<unzip src="${tomcat_src}/tools-src.zip" dest="${tools.home}"> <patternset> <include name="**/*.java"/> <exclude name="**/Test*.java"/> </patternset> </unzip>
<unzip dest="${tools.home}"> <patternset> <include name="**/*.java"/> <exclude name="**/Test*.java"/> </patternset> <fileset dir="."> <include name="**/*.zip"/> <exclude name="**/tmp*.zip"/> </fileset> </unzip>
<unzip src="apache-ant-bin.zip" dest="${tools.home}"> <patternset> <include name="apache-ant/lib/ant.jar"/> </patternset> <mapper type="flatten"/> </unzip>
從 ant.jar 中解壓縮儲存在 jar 檔案的 images 目錄(或其下的某個位置)中的所有影像。在解壓縮時,目錄結構 (images) 將會保留。
<unzip src="${ant.home}/lib/ant.jar" dest="..."> <patternset> <include name="images/"/> </patternset> </unzip>
從 ant.jar 中解壓縮兩個檔案,ant_logo_large.gif 和 LICENSE.txt。更精確地說:從來源檔案中的任何位置解壓縮具有這些名稱的所有檔案。在解壓縮時,目錄結構將會保留。
<unzip src="${ant.home}/lib/ant.jar" dest="..."> <patternset> <include name="**/ant_logo_large.gif"/> <include name="**/LICENSE.txt"/> </patternset> </unzip>
任務
<unzip src="some-archive" dest="some-dir"> <patternset> <include name="some-pattern"/> </patternset> <mapper type="some-mapper"/> </unzip>
與
<copy todir="some-dir" preservelastmodified="true"> <zipfileset src="some-archive"> <patternset> <include name="some-pattern"/> </patternset> </zipfileset> <mapper type="some-mapper"/> </copy>
相同,<untar>
和 <tarfileset>
也相同。<copy>
提供其他功能,例如動態篩選檔案,允許將檔案對應到多個目的地或可設定的檔案系統時間戳記粒度。
從 zipfile 中「刪除」檔案。
<zip destfile="new.jar"> <zipfileset src="old.jar"> <exclude name="do/not/include/this/class"/> </zipfileset> </zip>