循环访问文件集时出现问题



我尝试遍历wsdl的目录。首先,我很乐意获得每个文件的输出。

<target name="messages">
    <foreach target="wsdlList" param="wsdlfile">
        <path>
            <fileset dir="${base.wsdl.src}">
                <include name="*.wsdl" />
            </fileset>
        </path>
    </foreach>
</target>
<target name="wsdlList">
    <echo message="${wsdlfile}" />
</target>

我得到的输出是wsdlList: [echo] ${wsdlfile} 而不是我期望的所有 wsdl 文件。

不使用

<foreach> ,使用较新的<for>任务。您需要指向antlib.xml而不是antcontrib.properties <taskdef>

<taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
        <fileset dir="${ivy.dir}/antcontrib">
            <include name="ant-contrib*.jar"/>
        </fileset>
    </classpath>
</taskdef>

现在,您可以执行以下操作:

<target name="messages">
    <for param="wsdl.file">
        <fileset dir="${base.wsdl.src}">
            <include name="*.wsdl" />
        </fileset>
        <sequential>
            <echo message="@{wsdl.file}" />  <!-- Note "@" and not "$" -->
        </sequential>
    </for>
</target>

请注意,这是@{wsdl.file}而不是${wsdl.file}。这是一个每次都可以具有不同值的参数。

尝试调用"messages"目标作为依赖项,以便设置 wsdlfile 属性:

<target name="wsdlList" depends="messages">
    <echo message="${wsdlfile}" />
</target>

相关内容

  • 没有找到相关文章

最新更新