我想使用ant解压缩一个*.tar.xz的文件。
但是在ant中,我只能找到bunzip2、gunzip、unzip和untar等目标,但似乎都不起作用。
那么我该如何使用ant来展开一个*.tar.xz的文件呢?
ant-compress
、common-compress
和xz
三个JAR文件添加到Ant的lib
目录中),然后使用此任务:<target name="unxz">
<cmp:unxz src="foo.tar.xz" xmlns:cmp="antlib:org.apache.ant.compress"/>
<untar src="foo.tar" dest="."/>
<delete file="foo.tar"/>
</target>
你需要使用这个两步骤的过程,因为即使加入了额外的ant库,"xz"
值仍然不被 untar
任务的 compression
属性支持。通常你会用 untar
来提取已压缩的 tar 包。
如果有人像我一样想用Maven管理Ant,以下是操作步骤:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<dependencies>
<!-- Optional: May want to use more up to date commons compress, add this dependency
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.10</version>
</dependency> -->
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-compress</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>unpack</id>
<phase>generate-sources</phase>
<goals><goal>run</goal></goals>
<configuration>
<target name="unpack">
<taskdef resource="org/apache/ant/compress/antlib.xml" classpathref="maven.plugin.classpath"/>
<unxz src="${xz.download.file}" dest="${tar.unpack.directory}" />
<untar src="${tar.unpack.file}" dest="${final.unpack.directory}"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
untar
的“嵌套资源”支持,结合Compress Antlib的xzresource
,以避免临时文件。
- Stefan Bodewig