我正在尝试编写一个Ant脚本,该脚本将遍历特定目录中的所有SQL文件并修改文件中某些行的文本(我知道使用其他技术可以很容易地做到这一点,但我不幸的是必须在这里与Ant合作。)
我正在使用foreach
循环来遍历文件夹内容的文件集并为每个文件调用内部函数。然后,我尝试对文件中的每一行使用for
循环(在下面的代码中,我仅回显该行,但最终我会对其做更多的事情)。
<?xml version="1.0" encoding="UTF-8"?>
<project name="Foo" default="outer" basedir=".">
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
<property name="sqldir" location="resources/sql" />
<target name="outer">
<foreach target="inner" param="sqlfile">
<fileset dir="${sqldir}">
<include name="*.sql"/>
</fileset>
</foreach>
</target>
<target name="inner">
<echo message="${sqlfile}"/>
<loadfile property="file" srcfile="${sqlfile}"/>
<for param="line">
<tokens>
<file file="${file}"/>
</tokens>
<sequential>
<echo>@{line}</echo>
</sequential>
</for>
</target>
</project>
当我尝试执行脚本时,收到一条错误消息,表明它未能为for
行创建任务或类型,这尤其令人困惑,因为我认为要导入taskdef
语句foreach
也会导入for
。
我是否需要额外的taskdef
,或者通过其他方式来构造脚本以使其正常工作?