Apache flex 如何使用Flex Ant任务从scriptdef获取属性
我有一个工作build.xml文件,用于构建swc等各种任务。我要做的一件事是解析类的版本号,并将其附加到swc文件名 我正在使用scriptdef解析版本号,但我无法确定如何从scriptdef调用外部访问结果Apache flex 如何使用Flex Ant任务从scriptdef获取属性,apache-flex,ant,Apache Flex,Ant,我有一个工作build.xml文件,用于构建swc等各种任务。我要做的一件事是解析类的版本号,并将其附加到swc文件名 我正在使用scriptdef解析版本号,但我无法确定如何从scriptdef调用外部访问结果 <target name="output_version"> <loadfile property="version" srcFile="src/Main.as"/> <script_test str="${version}"/>
<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>
${str}
看起来您正在尝试设置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>
${res}
请注意,Ant属性是不可变的-它们不是变量-一旦设置,值就不能更改