费了九牛二虎之力,终于将我做的项目的ant编译脚本写出来了。这个过程中,遇到一个问题,不大,但是前后弄了快一周。开始先学ant,只不过是将别人的ant脚本copy过来,自己改了改,不成功。做了一个类似的小例子,却可以成功。并且项目在运行ant脚本后,不成功也就罢了,也不提示错误信息。所以根本就不知道是什么错误导致的编译失败。只是运行到下面这一句就结束了。
Loading configuration file C:\Program Files\Adobe\Adobe Flash Builder 4.5\sdks\3.6.0\frameworks\flex-config.xml
就这样,自己找了一天的问题,也没有做出来,然后就搁起来了。
后来,继续研究这个问题,看为什么编译不成功。然后在自己的机器上运用同样的ant脚本的代码,也是编译失败,但是错误信息却报出来了。现在不明白这个问题,为什么同样的ant脚本的错误信息,在一台机器上不能显示出来,而在另外一台机器上就可以呢?现在在猜测是不是ant版本的问题。
下面将ant脚本示例和调试过程中遇到的错误贴出来,希望大家遇到同样问题时可以少走点弯路。
ant脚本示例:
build.xml文件:
<project name="Ant build sample" basedir="." default="main">
<!-- load user configuration properties -->
<property file="build.properties" />
<property name="APP_ROOT" value="src"/>
<taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar" />
<target name="prepareEnv">
<mkdir dir="${basedir}/build"/>
</target>
<target name="main" depends="prepareEnv">
<path id="src.files">
<fileset dir="${src-dir}">
<include name="**/**"/>
</fileset>
</path>
<echo message="${APP_ROOT}"/>
<mxmlc file="${APP_ROOT}/aaaaaa.mxml"
output="build/aaaaaa.swf"
actionscript-file-encoding="UTF-8"
keep-generated-actionscript="false"
incremental="true"
>
<load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>
<source-path path-element="${FLEX_HOME}/frameworks"/>
<compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
<include name="libs"/>
</compiler.library-path>
<compiler.library-path dir="${basedir}" append="true">
<include name="libs"/>
</compiler.library-path>
<compiler.source-path path-element="${src-dir}"/>
</mxmlc>
</target>
</project>
Build.project文件:
###### Flex Properties ##############################
# change this path to your flex sdk directory
# Use "/" in your directory path e.g. C:/FlexSDK/3.0.0
FLEX_HOME=C:/Program Files/Adobe/Adobe Flash Builder 4.5/sdks/3.6.0
###### Project Properties ###########################
src-dir=${basedir}\\src
在编写过程中遇到的问题:
错误一:
Buildfile: E:\workspacefortest\aaaaaa\build.xml
[taskdef] Could not load definitions from resource flexTasks.tasks. It could not be found.
prepareEnv:
main:
[echo] src
BUILD FAILED
这是因为:<taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar" />中,classpath路径错误,在这个路径中根本就找不到flexTask.jar文件。应该检查一下"Flex_HOME"路径是否正确。
错误二:
Buildfile: E:\workspacefortest\aaaaaa\build.xml
prepareEnv:
main:
[echo] src
[mxmlc] Loading configuration file C:\Program Files\Adobe\Adobe Flash Builder 4.5\sdks\3.6.0\frameworks\flex-config.xml
[mxmlc] Error: unable to open '/src/aaaaaa.mxml'
[mxmlc] Use 'mxmlc -help' for information about using the command line.
BUILD FAILED
E:\BPM\workspacefortest11\workspacefortest\aaaaaa\build.xml:25: mxmlc task failed
Total time: 657 milliseconds
原因:aaaaaa.mxml文件没有被找到。也就是说“/src/aaaaaa.mxml”路径错误。在此项目中改为“src/aaaaaa.mxml”就可以了。
错误三:
[mxmlc] E:\client\client\src\client\view\rightPanel.mxml(19): Error: unable to resolve 'client/view/assets/up_arrow.gif' for transcoding
[mxmlc] [Embed(source="client/view/assets/up_arrow.gif")]
[mxmlc] E:\BPM\client\client\src\client\view\rightPanel.mxml(19): Error: Unable to transcode client/view/assets/up_arrow.gif.
[mxmlc] [Embed(source="client/view/assets/up_arrow.gif")]
BUILD FAILED
E:\client\client\build.xml:25: mxmlc task failed
原因:图片的路径不正确导致的。
开始的图片的路径是:
[Embed(source="client/view/assets/up_arrow.gif")]
应该改为:
[Embed(source="/client/view/assets/up_arrow.gif")]