亲爱的,我目前在检索 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>
这段代码的结果是:
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
似乎该变量已正确设置,因为它可以打印在“setVar”目标中,但无法从调用目标中检索值。
我也知道不可能为一个属性赋值两次。但问题甚至没有发生......当这种情况发生时,我可以在分配之前添加对属性值的检查以确保它尚未初始化......
你知道我可以解决我的问题的方法吗???
非常感谢您的帮助:)