在复杂的工程项目中使用Ant
因为有些程序会把所有的文件都放在一个目录中,下面的例子演示一个构建文件被用来编译,测试,打包AIR程序。
这个例子项目把源代码和图标都存在src目录,构建脚本创建了下面的工作目录:
build
存储正式版的SWF文件
debug
存储调试版的SWF文件和资源文件
release
存储最终的AIR包
Compiling
Mxmlc编译器允许指定编译后的文件存放路径,通过-output 选项指定。
Testing
ADL的第二个参数指定AIR程序的根目录
Packaging
<?
xml version="1.0"
?>
< project >
<!-- SDK properties -->
< property name ="SDK_HOME" value ="C:/FlexSDK" />
< property name ="MXMLC.JAR" value ="${SDK_HOME}/lib/mxmlc.jar" />
< property name ="ADL" value ="${SDK_HOME}/bin/adl.exe" />
< property name ="ADT.JAR" value ="${SDK_HOME}/lib/adt.jar" />
<!-- Project properties -->
< property name ="APP_NAME" value ="ExampleApplication" />
< property name ="APP_ROOT_DIR" value ="." />
< property name ="MAIN_SOURCE_FILE" value ="${APP_ROOT_DIR}/src/${APP_NAME}.mxml" />
< property name ="APP_ROOT_FILE" value ="${APP_NAME}.swf" />
< property name ="APP_DESCRIPTOR" value ="${APP_ROOT_DIR}/${APP_NAME}-app.xml" />
< property name ="AIR_NAME" value ="${APP_NAME}.air" />
< property name ="build" location ="${APP_ROOT}/build" />
< property name ="debug" location ="${APP_ROOT_DIR}/debug" />
< property name ="release" location ="${APP_ROOT_DIR}/release" />
< property name ="assets" location ="${APP_ROOT_DIR}/src/assets" />
< target name ="init" depends ="clean" >
< tstamp />
< mkdir dir ="${build}" />
< mkdir dir ="${debug}" />
< mkdir dir ="${release}" />
</ target >
< target name ="debugcompile" depends ="init" >
< java jar ="${MXMLC.JAR}" fork ="true" failonerror ="true" >
< arg value ="-debug=true" />
< arg value ="+flexlib=${SDK_HOME}/frameworks" />
< arg value ="+configname=air" />
< arg value ="-file-specs=${MAIN_SOURCE}" />
< arg value ="-output=${debug}/${APP_ROOT_FILE}" />
</ java >
< copy todir ="${debug}" >
< fileset dir ="${assets}" />
</ copy >
</ target >
< target name ="releasecompile" depends ="init" >
< java jar ="${MXMLC.JAR}" fork ="true" failonerror ="true" >
< arg value ="-debug=false" />
< arg value ="+flexlib=${SDK_HOME}/frameworks" />
< arg value ="+configname=air" />
< arg value ="-file-specs=${MAIN_SOURCE_FILE}" />
< arg value ="-output=${build}/${APP_ROOT_FILE}" />
</ java >
</ target >
< target name ="test" depends ="debugcompile" >
< exec executable ="${ADL}" >
< arg value ="${APP_DESCRIPTOR}" />
< arg value ="${debug}" />
</ exec >
</ target >
< target name ="package" depends ="releasecompile" >
< java jar ="${ADT.JAR}" fork ="true" failonerror ="true" >
< arg value ="-package" />
< arg value ="${release}/${AIR_NAME}" />
< arg value ="${APP_DESCRIPTOR}" />
< arg value ="-C" />
< arg value ="${build}" />
< arg value ="${APP_ROOT_FILE}" />
< arg value ="-C" />
< arg value ="${assets}" />
< arg value ="icons" />
</ java >
</ target >
< target name ="clean" description ="clean up" >
< delete dir ="${build}" />
< delete dir ="${debug}" />
< delete dir ="${release}" />
</ target >
</ project >
< project >
<!-- SDK properties -->
< property name ="SDK_HOME" value ="C:/FlexSDK" />
< property name ="MXMLC.JAR" value ="${SDK_HOME}/lib/mxmlc.jar" />
< property name ="ADL" value ="${SDK_HOME}/bin/adl.exe" />
< property name ="ADT.JAR" value ="${SDK_HOME}/lib/adt.jar" />
<!-- Project properties -->
< property name ="APP_NAME" value ="ExampleApplication" />
< property name ="APP_ROOT_DIR" value ="." />
< property name ="MAIN_SOURCE_FILE" value ="${APP_ROOT_DIR}/src/${APP_NAME}.mxml" />
< property name ="APP_ROOT_FILE" value ="${APP_NAME}.swf" />
< property name ="APP_DESCRIPTOR" value ="${APP_ROOT_DIR}/${APP_NAME}-app.xml" />
< property name ="AIR_NAME" value ="${APP_NAME}.air" />
< property name ="build" location ="${APP_ROOT}/build" />
< property name ="debug" location ="${APP_ROOT_DIR}/debug" />
< property name ="release" location ="${APP_ROOT_DIR}/release" />
< property name ="assets" location ="${APP_ROOT_DIR}/src/assets" />
< target name ="init" depends ="clean" >
< tstamp />
< mkdir dir ="${build}" />
< mkdir dir ="${debug}" />
< mkdir dir ="${release}" />
</ target >
< target name ="debugcompile" depends ="init" >
< java jar ="${MXMLC.JAR}" fork ="true" failonerror ="true" >
< arg value ="-debug=true" />
< arg value ="+flexlib=${SDK_HOME}/frameworks" />
< arg value ="+configname=air" />
< arg value ="-file-specs=${MAIN_SOURCE}" />
< arg value ="-output=${debug}/${APP_ROOT_FILE}" />
</ java >
< copy todir ="${debug}" >
< fileset dir ="${assets}" />
</ copy >
</ target >
< target name ="releasecompile" depends ="init" >
< java jar ="${MXMLC.JAR}" fork ="true" failonerror ="true" >
< arg value ="-debug=false" />
< arg value ="+flexlib=${SDK_HOME}/frameworks" />
< arg value ="+configname=air" />
< arg value ="-file-specs=${MAIN_SOURCE_FILE}" />
< arg value ="-output=${build}/${APP_ROOT_FILE}" />
</ java >
</ target >
< target name ="test" depends ="debugcompile" >
< exec executable ="${ADL}" >
< arg value ="${APP_DESCRIPTOR}" />
< arg value ="${debug}" />
</ exec >
</ target >
< target name ="package" depends ="releasecompile" >
< java jar ="${ADT.JAR}" fork ="true" failonerror ="true" >
< arg value ="-package" />
< arg value ="${release}/${AIR_NAME}" />
< arg value ="${APP_DESCRIPTOR}" />
< arg value ="-C" />
< arg value ="${build}" />
< arg value ="${APP_ROOT_FILE}" />
< arg value ="-C" />
< arg value ="${assets}" />
< arg value ="icons" />
</ java >
</ target >
< target name ="clean" description ="clean up" >
< delete dir ="${build}" />
< delete dir ="${debug}" />
< delete dir ="${release}" />
</ target >
</ project >