FlexBuilder2插件安装的编译速度实在是慢如蜗牛,今天终于不能忍受了,所以就想直接用mxmlc直接手工编译,可是每次都需要输入命令的方式也够繁琐的,就自然想到了JAVA自动批处理编译的利器ANT了,动手前先查看Flex2文档,一看条目有一条是说使用ANT编译MXML,以为不用自己操心了,进入一看,MM的文档还没有写好呢,晕…
FlexBuilder2插件安装的编译速度实在是慢如蜗牛,今天终于不能忍受了,所以就想直接用mxmlc直接手工编译,可是每次都需要输入命令的方式也够繁琐的,就自然想到了JAVA自动批处理编译的利器ANT了,动手前先查看Flex2文档,一看条目有一条是说使用ANT编译MXML,以为不用自己操心了,进入一看,MM的文档还没有写好呢,晕…
说动手就动手,首先先关闭FlexBuilder2的自动编译:
windows->Preferences->General->workspace,去除Build automatically前面的勾:
然后看下我们文件的组织结构:
- src:mxml以及as源文件存放位置
- build:编译后的swf文件存放位置
- build.xml:ANT脚本
编译的具体的思路如下:首先将src中的mxml文件复制到builder目录下,然后使用mxmlc直接编译生成swf,运行就直接调用flashPalyer8.5就可以了
以下是ANT脚本build.xml:
<?xml version=”1.0″ encoding=”UTF-8″?>
<project name=”Flex 2 Quick Start” default=”init”><description>
Flex 2 Quick start ant project
</description><!– set global properties for this build –>
<property name=”src” location=”src”/>
<property name=”build” location=”build”/>
<property name=”mxmlc”
location=”D:\web\Flex Builder 2 Alpha 1\Flex Framework 2 Alpha 1\bin\mxmlc.exe”/><property name=”flashPlayer”
location=”D:\web\Flex Builder 2 Alpha 1\Player\Version 8.5 alpha 1\Debug\SAFlashPlayer.exe”/>
<property name=”mxmlFile” value=”"/>
<target name=”init”>
<!– Create the time stamp –>
<tstamp/>
<!– Create the build directory structure used by compile –><mkdir dir=”${build}”/>
</target>
<target name=”copy” depends=”init”>
<copy todir=”${build}”>
<fileset dir=”${src}/”/>
</copy></target>
<target name=”compile” depends=”copy” description=”compile the source ” >
<!– Compile the mxml code from ${src} into ${build} –>
<exec executable=”${mxmlc}”>
<arg value=”-strict”/>
<arg value=”-optimize”/><arg value=”-accessible”/>
<arg value=”-coach”/>
<arg value=”${build}/${mxmlFile}.mxml”/>
</exec>
</target>
<target name=”run” depends=”compile” description=”open swf file”><exec executable=”${flashPlayer}”>
<arg value=”${build}/${mxmlFile}.swf”/>
</exec>
</target>
<target name=”clean” description=”clean up” >
<!– Delete the ${build} and ${dist} directory trees –><delete dir=”${build}”/>
</target>
</project>
解释如下:
1)定义相关的属性以提供后续的任务使用:
- src/build:分别是我们上面提到的两个文件夹
- mxmlc:指向的是Flex2的命令行编译工具的位置,
- flashPlayer:指向的是FlashPlay8.5的位置。
- mxmlFile:定义的是我们将要编译的mxml文件名(不带后缀)
2)定义各子任务:
- init,负责创建build文件夹
- copy,负责将src中的文件复制到build中
- compile,复制编译文件,直接使用exec命令调用mxmlc,使用编译时类型检测(-strict)、打开警告(-coach)等编译选项,如果大家还需要其他的选项请参考FLEX2文档
- run,调用FlashPlayer查看编译出来的swf文件
3)实际编译运行,我们现在要编译QuickStart.mxml
方法1:在命令提示符下直接使用ANT命令
ant -DmxmlFile=QuickStart run
方法2:使用Eclipse内置的对Ant的支持:
- 在Eclipse中,右击build.xml,选择run as->Ant Build
- 在弹出窗口中首先点击Build选项卡,去除Build before Launch选项,因为我们这里是自定义的编译,所以不需要Build before Launch,如果没有去除的话会导致每次运行ANT,Eclipse都视图先编译,导致运行ANT编译的启动速度非常慢。
- 然后点击targets选项卡,选择run,使用FlashPlayer打开swf文件,因为我们的run task 是依靠于compile,所以执行run之前会自动编译我们需要的mxml文件。
- 点击TAB卡片中的main,在Arguments中输入,-DmxmlFile=QuickStart,这里的argument指的就是执行 ANT脚本时候的参数,-D选项表示覆盖某给属性,我们这里覆盖mxmlFile属性为我们要编译的MXML文件名:QuickStart
- 点击Apply,点击Run,就开始执行ant脚本,编译成功的话,就会打开我们编译好的SWF文件了。
大功告成,Ant的方式编译比FlexBuilder2默认的编译方式快多了,更重要的是资源占用少多了,绝对不会拖垮您的Eclipse!
完整project文件下载:QuickStartWithAnt.zip
Ant的具体配置使用手册请查看:Ant使用手册
O comments at "Flex2 发现之旅:使用ANT编译您的MXML文件"
Comment Now!