原始文献 | Rich Internet Applications with Adobe Flex & Java |
页码号 | 25-27 |
翻译者 | 刘锦行(whizen) |
翻译时间 |
|
修订记录 | |
|
让我们先来看下发布一个如同Hello World程序这么简单的应用程序需要包含的步骤,如下:
1,将HelloWorld.mxml文件编译为swf文件.
2,使用HTML模板创建一个用来包装swf文件的HTML页面.
3,在服务器上建立一个目录用来存放Hello World应用程序的文档
4,拷贝或者上传HelloWorld.swf以及运行所需文件到那个目录里面
试想一下你的程序只是某个大型应用程序的一部分,这个大型应用程序还包含着一些需要编译并且被发布到服务器的其他位置的JAVA模块,或者虽然是一个不大的项目却包含着很多子任务需要按照一个特别的顺序来执行的话,来创建一个build script脚本是最好的选择.
使用ant来构造hello world应用程序
在ANT中,你通常使用一个XML文件来描述你的工程的build过程(通常叫做build.xml).一个ANT过程会包含目标(例如 编译)和任务的执行顺序(如 mkdir exec).列表2.2将会演示一个build.xml,这个文档将会建立一个叫做bin的输出目录并且编译我们的HelloWorld程序并将其放入目录中.这个Ant build文件包含2个目标:初始化init和编译compile.
<project name="HelloWorld" default="compile">
<property name="flex.mxmlc" location="C:/Program Files/Adobe/Flex Builder 2 Plug-in/Flex SDK 2/bin/mxmlc.exe" />
<property name="dest.dir" value="bin" />
<target name="init">
<delete dir="${dest.dir}" />
<mkdir dir="${dest.dir}" />
<attrib file="${dest.dir}" readonly="false" />
</target>
<target name="compile" depends="init">
<exec executable="${flex.mxmlc}" failοnerrοr="true">
<arg line="-output '${dest.dir}/HelloWorld.swf'"/>
<arg line="HelloWorld.mxml"/>
</exec>
</target>
</project>
列表2.2 ANT工程 – build.xml
init目标包含2个任务:删除掉旧的和新建一个叫做bin的目录
compile目标将会编译HelloWorld.mxml并且生成bin/HelloWorld.swf文件.你也可以通过一下的命令来完成编译并且存放到bin目录的过程:
mxmlc –output bin/HelloWorld.swf HelloWorld.mxml
除开目标和任务外,build.xml文档中还包含2个属性标签.其中一个定义了一个叫做dest.dir的属性,他的值是我们用来安放编译完成的HelloWorld.swf的目录bin:
<property name="dest.dir" value="bin" />
这样的话,在ANT中就可以使用表达式语言来调用他${…},他用来代替实际的值的话,无论如何更换都不用改动下面的代码.本例中值为bin.
列表2.2中还定义了一个叫做flex.mxml的属性,用来告诉ant我们的mxmlc编译器在哪里.compile目标中使用了ant的任务exec,这个任务将运行mxmlc编译器,也可以给通过<arg>标签给这个任务传参数.
Ant的下载地址是http://ant.apache.org/.只需要解压下载来的压缩包,然后将其bin目录的地址加入到环境变量的path函数中.
下载我们可以打开命令行窗口,然后进入HelloWorld.xml和build.xml文件的目录下,输入ant命令,程序将自动开始执行工程中默认的目标.如例所示,当compile目标有些地方需要init目标的时候,ant会自动的先执行init目标.
Ant has an extensive set of predefined tasks like copy, zip, jar, War, FTP, Mail, Condition, and many
ant预先定义了一个扩展的功能集合用来完成一些任务比如 copy,zip jar war ftp mail condition等等,请在http://ant.apache.org/manual/查看详细信息.
比如,我们要让我们的build文件同时运行在windows和unit上,那么需要如下定义mxmlc编译器的地址:
<condition property="flex.mxmlc" value="${sdkdir}/bin/mxmlc">
<os family="unix"/>
</condition>
<condition property="flex.mxmlc" value="${sdkdir}/bin/mxmlc.exe">
<os family="windows"/>
</condition>
你可以通过ant的命令行选项-Dpropery=value来传值给属性,例如我们只需要下面一段小代码就可以通过命令行传值给运行脚本:
ant -Dsdkdir=/opt/usr/freeflex
现在你可以尝试写复杂一点的ant脚本.比如,你可以通过替换表达式将一个HTML模板加工称为你所需要的SWF包装页面.也可以写一个bulid脚本将你的Flex同java web程序结合起来.
用ant的自动build会让你感觉愉快.
更多请看http://ant.apache.org/ant_in_anger.html.