2011-01-21 5 views
1

私はswcの構築などのさまざまな作業に使用している作業用build.xmlファイルを用意しています。クラスを作成し、それをswcファイル名に追加します。Flex Antタスクを使用してscriptdefからproperyを取得する方法

私はバージョン番号を解析するために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プロパティを設定しようとしているようです(エコーしているようです)。

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

をあなたのポストされたコードでは

attributes.get("str") 

の値をあるファイルsrc/Main.as、の内容になります: 1つのオプションは、JavaScriptでは、ちょうどそれに直接割り当てることですプロパティ名として理想的ではありません。

あなたは、result属性を経由してscriptdefにで見つかった情報を保持するスクリプトでこれを使用するプロパティの名前を渡したい場合は:例えば、呼び出し側で

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

そしてを:

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

Antプロパティは変更できません。これらは変数ではありません。一度設定すると値を変更できません。

+0

大きな説明、多くのおかげです。 – Neil