我有一个调用各种目标的主构建脚本。其中一个目标需要存储一个值,另一个目标需要显示它。显然这不起作用所以我认为它可能与范围有关。我尝试过var,property,并在target1之外声明属性。因为var似乎是可变的,所以看起来我需要使用它,但每次我的输出都是空的。
主要脚本
<antcall target="target1"/>
<antcall target="display"/>
在target1中:
<var name="myVar" value="${anotherVar}"/>
显示:
<echo>${myVar}</echo>
答案 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。