Ant 1.8包含或导入嵌套资源集合

时间:2010-06-11 20:37:14

标签: ant

我想让Ant自动包含或导入与特定模式匹配的资源,但我真的在努力学习语法。这是我尝试过的:

<import>
    <fileset dir="${basedir}" includes="*-graph.xml" />
</import>

但是,我只是收到错误消息

import requires file attribute or at least one nested resource

导入文档(和include)都说您可以使用嵌套资源集合,资源集合的文档说&lt; fileset&gt;是一个资源集合。我用谷歌搜索,根本找不到任何有用的例子。

我正在使用Ant 1.8.1(通过ant -version验证)

修改

发现问题。首先,SOMETHING必须匹配表达式。没有匹配的文件,它会爆炸 - 即使使用optional = true,这也很奇怪!其次,匹配文件是有效的Ant文件(即使它们只包含&lt; project /&gt; - 只是创建一个空文件还不够好。)

更好的错误消息,请Apache! : - )

2 个答案:

答案 0 :(得分:1)

尝试:

<foreach target="-import" param="file.name">
  <fileset dir="${basedir}" includes="*-graph.xml" />
</foreach>

<target name="-import">
  <import file="${file.name}" />
</target>

是ant-contrib任务(http://ant-contrib.sourceforge.net/tasks/tasks/index.html)我不确定这是否有效,我只是想出了它。

答案 1 :(得分:1)

以下是处理此问题的简单方法:

<project name="the-name-of-the-project">
  <import>
    <fileset dir="${basedir}" includes="*-graph.xml"  erroronmissingdir="false"/>
    <fileset file="${ant.file.the-name-of-the-project}"/>
  </import>
</project>

这样,导入文件集永远不会为空,因为它包含包含此声明的文件。这仅适用于<import>指令,因为它省略了已导入的文件; <{1}}指令很容易导致递归。

注意<include>是可选的,如果erroronmissingdir="false"始终存在。