如何在 Ant 中重用多个压缩文件集元素



我们希望构建多个zip文件,其中一些文件与其他文件具有共同的内容。与其为每个zip指定文件的完整列表(它们实际上很大),我想我会尝试重用一些。

所以我尝试为此使用 <union>

<project name="test" default="zips">
  <target name="zips">
    <union id="common">
      <zipfileset prefix="." dir="." includes="1"/>
      <zipfileset prefix="3" dir="." includes="2"/>
    </union>
    <zip zipfile="1.zip">
      <resources refid="common"/>
    </zip>
    <zip zipfile="2.zip">
      <resources refid="common"/>
    </zip>
  </target>
</project>

这确实会生成两个 zip 文件,每个文件内部都有"1"和"2",但两个文件中都缺少"3"前缀。

我做错了什么?

我们还有一个自定义任务,它在内部使用 zipfileset。我试图让它也与联合一起使用,但无法弄清楚如何获取前缀值。

为您的common资源集合尝试一下:

<union id="common">
  <fileset dir="." includes="1"/>
  <mappedresources>
      <fileset dir="." includes="2"/>
      <globmapper from="*" to="3/*"/>
  </mappedresources>
</union>

zipfileset中的 prefix 参数仅在从使用 src 参数指定的存档中读取文件时使用,否则将被忽略 - 这是您看到的行为。为了供您使用,您正在尝试在创建的存档中指定前缀。 为此,您需要一个映射器。

另请参阅:用于mappedresources.的 Ant 文档

相关内容

  • 没有找到相关文章

最新更新