使用ANT解压*.tar.xz文件

4

我想使用ant解压缩一个*.tar.xz的文件。

但是在ant中,我只能找到bunzip2、gunzip、unzip和untar等目标,但似乎都不起作用。

那么我该如何使用ant来展开一个*.tar.xz的文件呢?

2个回答

4
默认的Ant发行版不支持XZ格式,您需要使用Apache Compress Antlib。从这里下载带有所有依赖项的完整Antlib(将ant-compresscommon-compressxz三个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 包。


1
您可以使用untar的“嵌套资源”支持,结合Compress Antlib的xzresource,以避免临时文件。 - Stefan Bodewig
@StefanBodewig 好得多!! - uraimo

3

如果有人像我一样想用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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接