我在Ant中有以下宏定义,我想在这个宏定义之外传递"cmdStatus“值:
<macrodef name="execEtlBinScript">
<attribute name="script" />
<sequential>
<exec executable="@{script}" resultproperty="cmdStatus"/>
</sequential>
</macrodef>你知道这是否可能吗?
谢谢你的帮助。温馨的问候,foxrafi
发布于 2013-07-07 02:10:37
在您的示例中,设置了属性cmdStatus,然后可以在宏定义之外使用它。但我猜您的问题是,如果您多次调用宏,则无法获得下一个状态值,因为Ant中的属性是不可变的。
正确处理它的方法是使result属性成为宏的属性:
<macrodef name="execEtlBinScript">
<attribute name="script" />
<attribute name="resultproperty" />
<sequential>
<exec executable="@{script}" resultproperty="@{resultproperty}"/>
</sequential>
</macrodef>然后,每次对宏定义的调用都将通过不同的属性获取它的值:
<execEtlBinScript script="somescript" resultproperty="status1" />
<echo message="Result of the first call: ${status1}" />
<execEtlBinScript script="somescript" resultproperty="status2" />
<echo message="Result of the second call: ${status2}" />https://stackoverflow.com/questions/17489113
复制相似问题