使用Ant组合文件集

Kry*_*der 22 ant

我在Ant中定义了两个不同的文件集,如下所示:

<fileset id="fileset1" dir="${classes.dir}">
</fileset>

<zipfileset id="fileset2" src="myArchive.zip" includes="**/*.class">
</zipfileset>
Run Code Online (Sandbox Code Playgroud)

我想创建第三个文件集,它是上述两个文件集的并集

<fileset id="merged">
</fileset>
Run Code Online (Sandbox Code Playgroud)

谁能告诉我怎么做?甚至可以做那样的事情吗?提前致谢!

mar*_*ton 18

一种方法是使用Ant 资源集合,特别是a union.

<fileset id="fileset1" dir="${classes.dir}" />
<zipfileset id="fileset2" src="myArchive.zip" includes="**/*.class" />

<union id="onion">
    <resources refid="fileset1" />
    <resources refid="fileset2" />
</union>
Run Code Online (Sandbox Code Playgroud)

然后你可以在任何你可能使用文件集的地方引用'洋葱',例如

<copy todir="dest">
    <resources refid="onion" />
</copy>
Run Code Online (Sandbox Code Playgroud)

我建议使用通用resources元素而不是文件集以获得最大的灵活性.

  • Union对我不起作用 - 在我的情况下我得到"xxx不表示文件集",因为我需要调用的目标明确地要求文件集:`<fileset refid ="$ {xxx}"/>`: - \ (6认同)

Fem*_*emi 2

试试这个:我认为它应该有效,因为<fileset>是一个隐式的<patternset>.

<fileset id="fileset1" dir="${classes.dir}">
</fileset>

<zipfileset id="fileset2" src="myArchive.zip" includes="**/*.class">
</zipfileset>
Run Code Online (Sandbox Code Playgroud)

编辑:奇怪。也许是这个?

<patternset id="merged">
  <patternset refid="fileset1" />
  <patternset refid="fileset2" />
</patternset>
Run Code Online (Sandbox Code Playgroud)