我对Ant比较陌生,但我体验过创建通用ant目标的非常好的模式,这些ant目标将通过带有不同参数的antcall任务调用。
我的例子是编译目标,它使用复杂的构建命令编译多个系统,每个系统的编译命令略有不同。通过使用上面描述的模式,可以不为编译命令创建复制粘贴代码。
我这里的问题是,我不知道如何将返回值(例如编译器的返回值)传递回调用antcall任务的目标。那么我的方法是不是病态的,根本不可能从antcall任务中返回值,或者你知道什么解决方法吗?
谢谢,
发布于 2011-08-11 02:00:11
使用来自ant-contrib jar的antcallback而不是antcall
<target name="testCallback">
<antcallback target="capitalize2" return="myKey">
</antcallback>
<echo>a = ${myKey}</echo>
</target>
<target name="capitalize2">
<property name="myKey" value="it works"/>
</target>输出:
testCallback:
capitalize2:
[echo] a = it works
BUILD SUCCESSFUL发布于 2011-07-26 11:39:01
一种方法是使用"echo file= ...“将属性写出到临时文件中。或PropertyFile任务。然后在需要的地方读回属性。杂乱无章,但工作正常。
发布于 2011-01-13 22:11:28
蚂蚁任务就是把东西放进去,就会产生副作用。因此,尝试从函数的角度进行编程(东西进去,东西出来)将会是混乱的。
也就是说,您可以为每次调用生成一个属性名,并将结果值存储在该属性中。您需要传入一个识别符,这样就不会试图创建同一属性的副本。如下所示:
<target name="default">
<property name="key" value="world"/>
<antcall target="doSomethingElse">
<param name="param1" value="${key}"/>
</antcall>
<echo>${result-${key}}</echo>
</target>
<target name="doSomethingElse">
<property name="hello-${param1}" value="it works?"/>
</target>但我认为更典型的antcalls -instead方法是使用宏。http://ant.apache.org/manual/Tasks/macrodef.html
https://stackoverflow.com/questions/4680392
复制相似问题