Ant var和属性范围

时间:2010-02-03 14:40:21

标签: ant

我有一个调用各种目标的主构建脚本。其中一个目标需要存储一个值,另一个目标需要显示它。显然这不起作用所以我认为它可能与范围有关。我尝试过var,property,并在target1之外声明属性。因为var似乎是可变的,所以看起来我需要使用它,但每次我的输出都是空的。

主要脚本

<antcall target="target1"/>
<antcall target="display"/>

在target1中:

<var name="myVar" value="${anotherVar}"/>

显示:

<echo>${myVar}</echo>

5 个答案:

答案 0 :(得分:4)

antcall将在新项目中启动ant目标,不会以任何方式影响主项目。尝试使用antcontrib中的runtarget来运行同一个项目中的目标。

答案 1 :(得分:4)

你真的需要使用&lt; antcall&gt;?你可以改用目标依赖吗?

如您所料,使用&lt; antcall&gt;基本上创造了一个新的范围。

答案 2 :(得分:2)

您可以使用一个antcall元素调用多个目标。然后,这些目标将共享一个项目实例,包括定义的属性。为此,请将目标指定为嵌套元素,如下所示:

<antcall>
  <target name="target1"/>
  <target name="display"/>
</antcall>

答案 3 :(得分:2)

我找到的另一个选项是antcallback,它似乎有效。这限制了返回到特定值列表的内容,这似乎比打开整个目标的范围更安全(因为它设置,创建,修改了许多var和属性)。

<antcallback target="target1" return="myVar"/>
<antcall target="display"/>

我认为所有这些都是有效的解决方案,它只取决于你想要改变变量范围的级别。

答案 4 :(得分:0)

<antcall target="display">
   <param name="param1" value="anything" />
</antcall>

将上面的代码放在target1中。我相信你现在可以在显示屏上访问你的param1。