我尝试遍历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>