我尝试遍历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文件。
答案 0 :(得分:1)
使用较新的<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}
。这是一个每次都可以有不同值的参数。
答案 1 :(得分:0)
尝试将“messages”目标作为依赖项调用,以便设置wsdlfile属性:
<target name="wsdlList" depends="messages">
<echo message="${wsdlfile}" />
</target>