使用 ANT 从嵌套的 zip 文件中解压特定的 zip 文件

Unzip specific zip file from nested zip file using ANT

我有一个 zip 文件 ex。 'test.zip' 其中包含另外 2 个 zip 文件 - A.zip 和 B.zip。我只想提取 A.zip 的内容并保持 B.zip 不变。

我确实尝试了下面的代码片段,但还没有找到运气 -

<unzip src="test.zip" dest="test_dir">
            <fileset dir="test_dir">
                <include name="A.zip"/>
                <exclude name="B.zip"/>
            </fileset>
        </unzip>

请告知如何实现。

PatternSets 用于 select 文件从存档中提取。如果不使用模式集,则提取所有文件。

FileSets 可用于 select 归档文件以执行非归档。

试试这个:

<unzip src="test.zip" dest="test_dir">
            <patternset>
                <include name="A.zip"/>
            </patternset>
            <fileset dir="test_dir">
                <include name="A.zip"/>
            </fileset>
        </unzip>

来自the unzip task’s documentation

Only file system based resource collections are supported by Unjar/Unwar/Unzip, this includes fileset, filelist, path, and files.

这意味着您必须在文件系统的某处拥有 A.zip 的物理副本。

所以,真的没办法,只能分两步走:

<tempfile property="a" suffix=".zip"/>
<copy tofile="${a}">
    <zipentry zipfile="test.zip" name="A.zip"/>
</copy>

<unzip src="${a}" dest="test_dir"/>
<delete file="${a}"/>