【问题标题】:Problems with iterating through fileset遍历文件集的问题
【发布时间】:2014-12-10 13:52:00
【问题描述】:

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

【问题讨论】:

    标签: java ant ant-contrib


    【解决方案1】:

    不要使用&lt;foreach&gt;,而是使用较新的&lt;for&gt; 任务。您需要在&lt;taskdef&gt; 中指向antlib.xml 而不是antcontrib.properties

    <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}。这是一个每次都可以有不同值的参数。

    【讨论】:

      【解决方案2】:

      尝试调用“消息”目标,作为依赖项,以便设置 wsdlfile 属性:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-19
        • 2011-09-06
        相关资源
        最近更新 更多