首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将antcall目标中定义的属性传递回调用目标

将antcall目标中定义的属性传递回调用目标
EN

Stack Overflow用户
提问于 2011-01-13 21:07:17
回答 5查看 22.7K关注 0票数 16

我对Ant比较陌生,但我体验过创建通用ant目标的非常好的模式,这些ant目标将通过带有不同参数的antcall任务调用。

我的例子是编译目标,它使用复杂的构建命令编译多个系统,每个系统的编译命令略有不同。通过使用上面描述的模式,可以不为编译命令创建复制粘贴代码。

我这里的问题是,我不知道如何将返回值(例如编译器的返回值)传递回调用antcall任务的目标。那么我的方法是不是病态的,根本不可能从antcall任务中返回值,或者你知道什么解决方法吗?

谢谢,

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-08-11 02:00:11

使用来自ant-contrib jar的antcallback而不是antcall

代码语言:javascript
复制
<target name="testCallback">
    <antcallback target="capitalize2" return="myKey">
    </antcallback>
    <echo>a = ${myKey}</echo>
</target>

<target name="capitalize2">
    <property name="myKey" value="it works"/> 
</target>

输出:

代码语言:javascript
复制
testCallback:

capitalize2:
     [echo] a = it works

BUILD SUCCESSFUL
票数 16
EN

Stack Overflow用户

发布于 2011-07-26 11:39:01

一种方法是使用"echo file= ...“将属性写出到临时文件中。或PropertyFile任务。然后在需要的地方读回属性。杂乱无章,但工作正常。

票数 5
EN

Stack Overflow用户

发布于 2011-01-13 22:11:28

蚂蚁任务就是把东西放进去,就会产生副作用。因此,尝试从函数的角度进行编程(东西进去,东西出来)将会是混乱的。

也就是说,您可以为每次调用生成一个属性名,并将结果值存储在该属性中。您需要传入一个识别符,这样就不会试图创建同一属性的副本。如下所示:

代码语言:javascript
复制
<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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4680392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档