gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:29:12 27 4
gpt4 key购买 nike

亲爱的,我目前在检索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”目标中打印,但无法从调用目标中检索值。

我也知道不可能将一个值赋给属性两次。但是问题甚至没有发生……在这种情况下,我可以在分配属性之前添加对属性值的检查,以确保它尚未初始化...

您对我解决问题的方式有什么了解吗???

在此先感谢您的帮助:)

最佳答案

从ant-contrib尝试<for>任务,而不是<foreach><for>任务利用了后来出现的Ant宏功能。与旧的<foreach>任务相比,它工作更快且更灵活。使用<for>时,您处于同一项目上下文中。这意味着在循环中设置的属性将在循环外部可见。当然,通常会使用属性的常规规则……您只需设置一次即可……除非您使用ant-contrib的<var>任务来覆盖或取消设置先前设置的属性。

啊, Ant 入侵的乐趣。

关于ant - ANT:如何读取在foreach循环中设置的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5325260/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com