解压缩*.tar.xz与ANT



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

但是我只能找到,bunzip2, gunzip, unzip和untar作为目标在ant中,似乎没有一个工作。

那么如何用*.tar展开tarball文件呢?和蚂蚁在一起?

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

从这里下载包含所有依赖项的完整Antlib(将三个jar文件ant-compress, common-compress, xz添加到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任务(通常用于提取压缩tar的任务)的compression属性的支持。

如果其他人像我一样想对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>

最新更新