如何在Ant脚本的foreach循环中嵌套for循环?

时间:2019-07-25 19:14:17

标签: xml ant ant-contrib

我正在尝试编写一个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,或者通过其他方式来构造脚本以使其正常工作?

0 个答案:

没有答案