2

I have the following macro definition in Ant and I would like to pass the "cmdStatus" value outside this macro def:

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

Do you have any idea if it is possible or not ?

Thank you for any help. Kind regards, foxrafi

4

1 に答える 1

3

あなたの例では、プロパティcmdStatusが設定され、マクロ定義の外で利用可能になります。しかし、あなたの問題は、マクロを数回呼び出すと、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}" />
于 2013-07-06T18:10:36.570 に答える