亲爱的,我目前面临一些问题,需要检索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"目标中打印,但无法从调用目标中检索值.
我也知道不可能两次为属性赋值.但问题甚至没有发生......当它出现这种情况时,我可以在分配之前添加对属性值的检查,以确保它尚未初始化...
你有解决问题的方法吗?
非常感谢您的帮助:)