2013-07-05 33 views
2

我有螞蟻下面的宏定義,我想通過這個宏高清之外的「cmdStatus」值:Macrodef在螞蟻:傳遞價值的定義之外

<macrodef name="execEtlBinScript"> 
    <attribute name="script" /> 
    <sequential> 
     <exec executable="@{script}" resultproperty="cmdStatus"/> 
    </sequential> 
</macrodef> 

你有什麼想法,如果它可能與否?

謝謝你的幫助。 親切的問候, foxrafi

回答

3

在你的例子中,屬性cmdStatus被設置,然後可以在macrodef之外。但我想你的問題是,如果你的宏調用了幾次,你不會獲得下一個狀態值,因爲Ant中的屬性是不可變的。

妥善處理它的方式是使結果屬性宏觀調控的屬性:

<macrodef name="execEtlBinScript"> 
    <attribute name="script" /> 
    <attribute name="resultproperty" /> 
    <sequential> 
     <exec executable="@{script}" resultproperty="@{resultproperty}"/> 
    </sequential> 
</macrodef> 

然後每次調用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}" />