扩展Ant zipgroupfileset类型

时间:2013-07-15 10:03:33

标签: ant

我正在尝试实现一个替代Ant类型,它的工作方式与zipgroupfileset类似,但是接受类似类路径的字符串作为输入。

我的问题是:即使下载apache ant的源代码,我也找不到任何代码或特定于实现的信息,没有typedef和没有扩展类。 zipgroupfileset似乎甚至没有正确记录。关于此类型的主要文档似乎是Zip Task documentation中的这个非常短的段落:

  

zipgroupfileset

     

zipgroupfileset允许合并多个zip文件   档案。在此文件集中找到的每个文件都将添加到存档中   与添加zipfileset src文件的方式相同。

     

zipgroupfileset是一个文件集,支持其所有属性和   嵌套元素。

我的错误在哪里?

1 个答案:

答案 0 :(得分:4)

  

我需要评估像libs/a.jar;libs/b.jar;bin/c.jar这样的变量,并使用<jar>任务将所有内容包含到新jar中

您可以使用自Ant 1.8

以来可用的<archives> resource collection type来执行此操作
<property name="jars.to.include" value="libs/a.jar;libs/b.jar;bin/c.jar" />

<jar destfile="dest.jar">
  <archives>
    <zips>
      <path path="${jars.to.include}" />
    </zips>
  </archives>
</jar>

关于zipgroupfileset本身:

  

我找不到任何关于它的代码或特定于实现的信息,没有typedef和没有扩展类。

没有特定的类代表zipgroupfileset,逻辑是embedded in the zip task implementationZip任务有一个

public void addZipGroupFileset(FileSet set)

因此XML中的标记<zipgroupfileset>被视为定义普通FileSet - 您可以合法地执行

<fileset id="lib.jars" dir="lib" includes="*.jar" />

<jar destfile="dest.jar">
  <zipgroupfileset refid="lib.jars" />
</jar>

执行zip(或jar)任务时,将依次检查每个“group”文件集,并为每个zip / jar文件生成该组包含新ZipFileSet的文件,以便从该文件中读取,并且生成的ZipFileSet的内容将添加到目标存档。