【问题标题】:Ant foreach: Cause: The name is undefined. But everything seems to be okAnt foreach: 原因:名称未定义。但一切似乎都还好
【发布时间】:2013-03-11 17:27:20
【问题描述】:

我对 ant 有一个奇怪的问题。它的版本是 1.7.1。

我正在尝试做下一件事并得到错误。

<target name="execute-all-buildfiles">
    <foreach param="buildfile-path" target="execute-buildfile">
        <path>
            <dirset dir="${path.to.server}/share/source"/>
        </path>
    </foreach>
</target>

<target name="execute-buildfile">
    <echo message="" />
    <echo message="" />
    <echo message="" />
    <echo message="__________ Building cartridge ${buildfile-path} ___________" />
    <echo message="" />
    <echo message="" />
    <echo message="" />
    <java
            jvm="${path.to.server}/engine/jdk/bin/java"
            classname="org.apache.tools.ant.launch.Launcher"
            fork="true"
            failonerror="true">
        <classpath>
            <pathelement location="${ant.home}/lib/ant-launcher.jar"/>
        </classpath>
        <arg value="-f" />
        <arg value="${buildfile-path}/build/build.xml" />
        <arg value="-Dis.home=${path.to.server}" />
    </java>
</target>

我尝试过不太复杂的 foreach 版本,但效果不佳。请帮帮我。

<target name="run">     
   <foreach target="loop" param="loop.param">  
      <path>
          <dirset dir="${path.to.server}/share/source"/>
      </path>
   </foreach>  
</target>  
<target name="loop">     
   <echo message="${loop.param}"/>  
   <basename property="dir.name" file="${loop.param}"/>  
   <echo message="${dir.name}"/>  
</target>  

附:对错误感到抱歉。看一个简单的。

【问题讨论】:

  • 在发布问题时,目标前缺少“
  • 您能否将“不太复杂的 foreach 版本”发布为 quasi-SSCCE
  • 另外,您不是必须拥有list=a,b,c,d 属性或嵌套fileset 吗?我只看到一个dirset,也许它不喜欢那样。
  • 我在另一台机器上试过,第二个目标运行成功。是什么原因造成的,我的大脑已经很痛了

标签: java ant foreach


【解决方案1】:

“原因:名称未定义”表示该任务未安装在您的 ant 环境中。
&lt;foreach&gt; 不是 vanilla ant 的任务,但需要 ant 可用的 ant 插件 antcontrib
安装 antcontrib 后,您应该使用 &lt;taskdef resource="net/sf/antcontrib/antlib.xml"/&gt; 来激活所有 antcontrib 任务。
GOTCHA => 不要使用 &lt;taskdef resource="net/sf/antcontrib/antcontrib.properties"/&gt; 中提到的 http://ant-contrib.sourceforge.net/ 作为 net/sf/antcontrib/antcontrib。 properties 仅包含 Ant 1.6.x 之前的 ant 版本的任务

【讨论】:

    猜你喜欢
    • 2021-07-07
    • 2011-03-19
    • 2014-06-14
    • 2011-12-01
    • 2021-02-27
    相关资源
    最近更新 更多