我想让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! : - )
答案 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"
始终存在。