一、概述
unjar/untar/unwar/unzip是Ant内置任务,用于解压zip、war或jar文件,PatternSet用于选择从存档中提取的文件,资源集合用于选择执行解压的存档文件。Unjar/Unwar/Unzip只支持基于文件系统的资源结合,Untar支持任意资源集合。Ant1.7之前只支持fileset做为嵌套元素。可以通过嵌套mapper元素来定义文件名转换,默认映射器为identitymapper。 在进行文件时区偏移的计算时,不同的ZIP工具处理时间戳的方式不同,一些ZIP库从文件系统中读取时间戳并保存,而其他库在读和写文件时会修改时间戳,以使所有的时间戳有相同的时区。由一个库创建的zip存档可能会在其他库提取文件时提取到错误的时间戳。
二、属性
src:要解压的存档文件,可以通过嵌套资源集合元素来指定。
dest:保存提取出的文档的目录。
overwrite:是否覆盖文件,即使它们比存档中的条目更新,默认为true。
compression:此属性只对untar有效,用于设置压缩方法。可选值有:none、gzip和bzip2,默认为none。
encoding:此属性对untar无效,用于设置zip文件中文件名的编码。可选值参考java文档,默认为utf8,平台的默认字符编码使用魔术值native-encoding。
failOnEmptyArchive:ant1.8起,尝试提取空的归档是否产生错误,默认为false。
stripAbsolutePathSpec:ant1.8起,在提取文件之前,是否应当删除提取的文件的文件名之前的“/”或“\”,会在应用include/exclude模式和嵌套mapper之前改变条目名称,默认为false。
scanForUnicodeExtraFields:此属性对untar无效,如果存档包含 Unicode 额外字段, 则使用它们来设置文件名, 而忽略指定的编码,默认为true。
三、简单示例
<project>
<unjar src="${ant.home}/lib/ant-testutil.jar" dest="result" overwrite="false"/>
<untar src="rrdtool-1.3.1.tar.gz" dest="." overwrite="false" compression="gzip"/>
</project>