2011-01-21 61 views
1

我有一個可用的build.xml文件,用於構建swc等各種任務等。我想要做的一件事是從a文件解析版本號類並將其附加到swc文件名。如何使用Flex Ant任務從scriptdef獲取配件

我正在使用scriptdef來解析版本號,但我不能解決如何從scriptdef調用之外訪問結果。

<target name="output_version"> 
    <loadfile property="version" srcFile="src/Main.as"/> 
    <script_test str="${version}"/>  
    <echo>${str}</echo> 
</target> 

<scriptdef name="script_test" language="javascript"> 
       <attribute name="str"/> 
       <attribute name="result"/> 
       <element name="fileset" type="fileset"/> 
       <element name="path" type="path"/> 
       <![CDATA[ 

        var txt = attributes.get("str"); 
        var patt = /VERSION:String = "(.+)?"/; 
        var result = patt.exec(txt); 
        self.log("Hello from script: " + result[1]); 

       self.project.setProperty(attributes.get("str"), result[1]); 
       ]]> 
</scriptdef> 

回答

3

它看起來像你試圖設置str屬性(正如你迴應它)。 一種選擇是,在JavaScript中,只需直接分配給它:

self.project.setProperty("str", result[1]); 

在您發佈的代碼

attributes.get("str") 

值將是內容的文件src/Main.as,這是作爲一個屬性名稱並不理想。

如果你想通過屬性的名稱通過result屬性持有發現信息到scriptdef,在腳本中使用此:

self.project.setProperty(attributes.get("result"), result[1]); 

然後在主叫方,如:

<script_test str="${version}" result="res" /> 
<echo>${res}</echo> 

請注意,Ant屬性是不可變的 - 它們不是變量 - 一旦設置值無法更改。

+0

很好的解釋,非常感謝。 – Neil 2011-01-22 17:15:18