小编Lol*_*lue的帖子

ANT:如何读取foreach循环中设置的属性

亲爱的,我目前面临一些问题,需要检索foreach循环中设置的属性的值.也许你们其中一个可以帮助我......

目的是检查自生成相应jar后是否已修改文件夹的一个文件.这样我知道是否必须再次生成jar.我所做的是使用foreach循环遍历文件夹,如果一个文件与我的测试匹配,则将属性设置为true.

问题是我的变量在我的循环后似乎不存在...这是一个简化的代码示例,它有同样的问题:

<target name="target">
    <taskdef resource="net/sf/antcontrib/antlib.xml" classpath="${lib.dir}/ant-contrib.jar"></taskdef>
    <foreach target="setVar" param="var" list="a,b"/>
    <echo>myreturn in target: ${env.myreturn}</echo>
    <property name="env.myreturn" value="c"/>
    <echo>myreturn in second: ${env.myreturn}</echo>
</target>
<target name="setVar">
    <property name="env.myreturn" value="${var}"/>
    <echo>myreturn in setVar: ${env.myreturn}</echo>
</target>
Run Code Online (Sandbox Code Playgroud)

这段代码的结果是:

target:
setVar:
 [echo] myreturn in setVar: a
setVar:
 [echo] myreturn in setVar: b
 [echo] myreturn in target: ${env.myreturn}
 [echo] myreturn in second: c
BUILD SUCCESSFUL
Run Code Online (Sandbox Code Playgroud)

似乎该变量已正确设置,因为它可以在"setVar"目标中打印,但无法从调用目标中检索值.

我也知道不可能两次为属性赋值.但问题甚至没有发生......当它出现这种情况时,我可以在分配之前添加对属性值的检查,以确保它尚未初始化...

你有解决问题的方法吗?

非常感谢您的帮助:)

ant foreach properties ant-contrib

6
推荐指数
2
解决办法
2万
查看次数

标签 统计

ant ×1

ant-contrib ×1

foreach ×1

properties ×1