4

我想用 *.tar.xz 和 ant 提取一个 tarball 文件。

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

那么如何用 ant 扩展带有 *.tar.xz 的 tarball 文件呢?

4

2 回答 2

4

默认的 Ant 发行版不支持 XZ 格式,您需要Apache Compress Antlib

从这里下载包含所有依赖项的完整 Antlib (在您的 ant 目录中添加三个 jar ant-compresscommon-compress、 ),然后使用此任务:xzlib

<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"仍然不支持该值,通常用于提取压缩 tar 的任务。compressionuntar

于 2015-07-24T07:21:01.160 回答
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>
于 2015-08-26T20:43:30.260 回答