我的问题是;
当我多次调用一个antcallback函数时,它总是返回相同的值。查看以下代码:
<project name="AntCallBack" default="testFnc" basedir=".">
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<target name="acbFnc" description="Sub Function" >
<echo message="[acbFnc] started"/>
<property name="out.file" value="${in.file}"/>
<echo message="[acbFnc] ended."/>
</target>
<target name="testFnc" description="Main" >
<antcallback target="acbFnc" return="out.file" >
<param name="in.file" value="TEST-1" />
</antcallback>
<echo message="CALL - 1 : out.file : ${out.file}" />
<antcallback target="acbFnc" return="out.file" >
<param name="in.file" value="TEST-2" />
</antcallback>
<echo message="CALL - 2 : out.file : ${out.file}" />
</target>
</project>结果是:
$ /home/apache-ant-1.9.4/bin/ant -f AntCallBackTest.xml
Buildfile: AntCallBackTest.xml
testFnc:
acbFnc:
[echo] [acbFnc] started
[echo] [acbFnc] ended.
[echo] CALL - 1 : out.file : TEST-1
acbFnc:
[echo] [acbFnc] started
[echo] [acbFnc] ended.
[echo] CALL - 2 : out.file : TEST-1
BUILD SUCCESSFUL
Total time: 0 seconds如你所见,我在第一次调用中发送了"param name="in.file“value="TEST-1”“,
我在第二次呼叫中发送了"param name="in.file“value="TEST-2”“,
但它总是返回第一个值:
回声呼叫-1: out.file :测试-1
回声呼叫-2: out.file :测试-1
我做错了什么?
提前感谢
发布于 2014-05-13 14:47:04
我找到了解决方案:
在第二次调用之前,我必须取消设置变量:
<var name="out.file" unset="true"/>我是说,应该是这样的:
<target name="testFnc" description="Main" >
<antcallback target="acbFnc" return="out.file" >
<param name="in.file" value="TEST-1" />
</antcallback>
<echo message="CALL - 1 : out.file : ${out.file}" />
<var name="out.file" unset="true"/>
<antcallback target="acbFnc" return="out.file" >
<param name="in.file" value="TEST-2" />
</antcallback>
<echo message="CALL - 2 : out.file : ${out.file}" />
</target>https://stackoverflow.com/questions/23624051
复制相似问题