2011-04-19 84 views
2

我有腳本不到風度工作becouse一次設置屬性成爲不可寫ANT如何在Ant 1.8中使用詞彙範圍屬性?

<target name="test" > 

    <fileset id="dir1" dir="./dir1"/> 
    <fileset id="dir2" dir="./dir2"/> 

    <pathconvert property="path.converted" refid="dir1"/> 
    <echo message="${path.converted}"/> 
    <property name="path.converted" value="set this property manually"/> 
    <echo>${path.converted}</echo> 
    <pathconvert property="path.converted" refid="dir2"/> 
    <echo message="${path.converted}"/> 
</target> 

總是迴盪相同的結果,但我想這是呼應不同

我在Apache Ant的1.8.0版本閱讀,該

詞法作用域局部特性,即 性質僅是一個目標,連續塊或類似 環境內限定 。這是非常有用的 ,其中 宏現在可以定義臨時 屬性,該屬性將在 任務完成後消失。

如何使用它們?

回答

4

我找到了解決辦法。使用local task

<target name="direct" depends=""> 

    <fileset id="dir1" dir="./dir1"/> 
    <fileset id="dir2" dir="./dir2"/> 

    <!--<property name="path.converted" value="0"/>--> 
    <local name="path.converted"/> 

    <pathconvert property="path.converted" refid="dir1"/> 
    <echo message="${path.converted}"/> 
    <local name="path.converted"/> 
    <property name="path.converted" value="0"/> 

    <echo>${path.converted}</echo> 
    <local name="path.converted"/> 
    <pathconvert property="path.converted" refid="dir2"/> 
    <echo message="${path.converted}"/> 

</target> 
+0

stackoverflow message:你可以在2天內接受你自己的答案 – popalka 2011-04-19 13:41:38

0

我會簡單地使用不同的名稱爲path.converted上面的例子。
path.converted.1,path.converted.2等

,如果您已經創建了你一定要使用當地任務,使物業當地一個macrodef。