25.9节. 使用mxmlc和Ant编译Flex应用程序

25.9.1. 问题
我想为Ant建造文件添加编译程序的任务。
25.9.2. 解决办法
为你的使用MXML编译器编译文件的Ant建造文件添加可执行的任务。
25.9.3. 讨论
编译对象是你要添加到你的Ant建造文件中的最常见和有用的对象。Flex应用程序是用Flex 3 SDK中的免费的命令行编译器mxmlc编译的。在你建造文件中添加了要编译的目标后,就可以自动化建造过程了:不用你再打开命令提示符或终端,Ant会自动编译所有的文件。

MXML编译器(mxmlc)有多种格式。你可以生成一个目标,然后使用可执行版的:
+展开
-XML
<!-- COMPILE MAIN -->
<target name="compileMaindescription="Compiles the main application files.">
<echo>Compiling '${bin.dir}/main.swf'...</echo>
<exec executable="${FLEX_HOME}/bin/mxmlc.exespawn="false">
<arg line="-source-path '${src.dir}'" />
<arg line="-library-path '${FLEX_HOME}/frameworks'" />
<arg line="'${src.dir}/main.mxml'" />
<arg line="-output '${bin.dir}/main.swf'" />
</exec>
</target>

或者,你可以编写一个类似下面的任务,然后使用Java版的:
+展开
-XML
<!-- COMPILE MAIN -->
<target name="compileMaindescription="Compiles the main application files.">
<echo>Compiling '${bin.dir}/main.swf'...</echo>
<java jar="${FLEX_HOME}/lib/mxmlc.jarfork="truefailonerror="true">
<arg value="+flexlib=${FLEX_HOME}/frameworks" />
<arg value="-file-specs='${src.dir}/main.mxml'" />
<arg value="-output='${bin.dir}/main.swf'" />
</java>
</target>

最后(或许是最好的)方式是使用Flex 3 SDK中的mxmlc任务。在25.3节中已经讲述了如何安装。为了能访问你的建造文件中的信息,你应该首先添加一个任务定义:
+展开
-XML
<!-- TASK DEFINITIONS -->
<taskdef resource="flexTasks.tasksclasspath="${FLEX_HOME}/ant/lib/flexTasks.jar" />

导入Flex任务后,你可以使用更加直观的语法编译,在诸如Eclipse一样的工具中显示错误提示。比如:
+展开
-XML
<!-- COMPILE MAIN -->
<target name="compileMaindescription="Compiles the main application files.">
<echo>Compiling '${bin.dir}/main.swf'...</echo>
<mxmlc file="${src.dir}/main.mxmloutput="${bin.dir}/main.swf">
<source-path path-element="${src.dir}" />
</mxmlc>
</target>

在所有的例子中,应用了相同的基本规则。你应该定义指向项目src和bin目录的属性,也需要定义指向Flex 3 SDK的属性。例子中的所有属性的名字都可以改变,除了FLEX_HOME,这个名字是固定的。FLEX_HOME属性必须在使用mxmlc任务前设置为Flex 3 SDK的根目录。

如果你使用EXE或JAR版本的mxmlc,你可以使用FLEX_HOME以外的属性名称。

使用Ant编译你的项目的真正好处是它能把所有的目标链在一起。例如,你可能会创建一个名为compileAll的目标,它会一个接一个的调用一些单独编译的目标:
+展开
-XML
<!-- COMPILE ALL -->
<target name="compileAlldescription="Compiles all application files.depends="compi
leMain, compileNavigation, compileGallery, compileLibrary
">

<echo>Finishing compile process...</echo>
</target>

在一开始这看起来有些恐怖;但是当你熟悉Ant和配置文件后,你会发现它会大大提高你的工作效率。通过使用第三方工具比如Ant来自动化你的编译过程,你已经不会被困在只能使用单一的开发工具上了。你可以很容易的在你选择的开发工具,比如Flex Builder,FDT,TextMate,或者FlashDevelop上调用Ant来创建你的项目。

加支付宝好友偷能量挖...


评论(0)网络
阅读(106)喜欢(0)flash/flex/fcs/AIR