我正在尝试在Ant脚本中使用foreach循环,但我收到消息:问题:无法创建任务或键入foreach原因:名称未定义。
我不明白为什么这不起作用。它不是第三方图书馆。这是一项标准任务,将成为最新版Ant(1.8)的一部分。
<target name="parse">
<echo message="The first five letters of the alphabet are:"/>
<foreach param="instance" list="a,b,c,d,e">
</foreach>
</target>
答案 0 :(得分:20)
这是一项标准任务 Ant的最新版本的一部分 (1.8)。
不,不是。至少我在ant manual的核心和可选任务列表中找不到它。 它似乎是ant-contrib project的一部分,因此需要单独安装。
答案 1 :(得分:4)
<script>
吗?在这个标签中你可以使用一些着名的脚本语言,如javascript和python。他们还可以与Project,Task ... Ant对象进行交互,这意味着您可以设置/获取属性甚至执行其他任务。看看这个来自“使用ant的java开发”一书的例子
<project name="script_example" default="test-random">
<description>
Use a script task to generate a random number, then
print it
</description>
<target name="random">
<script language="javascript"><![CDATA[
//NB: an unqualified Math is the JavaScript object
var r=java.lang.Math.random();
var num = Math.round(r*10);
project.setNewProperty("random", num);
self.log("Generated random number " + num, project.MSG_DEBUG);
]]>
</script>
</target>
<target name="test-random" depends="random">
<echo>Random number is ${random}</echo>
</target>
</project>
答案 2 :(得分:3)
我在Ant 1.8手册中找不到foreach任务 - 它在哪里?我只知道ant-contrib的任务,它需要指定'target'属性:http://ant-contrib.sourceforge.net/tasks/tasks/foreach.html
答案 3 :(得分:3)
我在eclipse下遇到了与各种版本的蚂蚁相同的问题。
将此添加到您的代码中,不要在eclipse下添加参数(不要指定任何类路径):
<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="/path/to/ant-contrib/ant-contrib-1.0b3.jar"/>
答案 4 :(得分:3)
您尚未定义要调用的目标:
<foreach param="instance" list="a,b,c,d,e" target="processListItem" />
或者:
<for param="instance" list="a,b,c,d,e" >
<sequential>
<!-- Do Something with @{instance} -->
</sequential>
</for>