两年前刚开始学Flex的时候常去看Cookbook, 还翻译过一篇关于生成SWC文件的帖子—当时甚至连ANT都没有用过, 真TM是为赋新词强说愁, 闲的肱二头肌疼, 再上层楼, 用了ANT, 写过几个Build才知道, 除了使用了装B武器之外, 我仍旧一无是处.
使用Adobe提供的compc – component compiler来打包as文件, 使用ANT编写极为简单, 如下:
<!– =================================
target: Build SWC文件举例 – 极不实用.
================================= –>
<target name=”buildSWCTest” depends=”” description=”Build Athena Framework SWC file.”>
<compc output=”$E:/test.swc”
include-classes=”com.liguoliang.Class1 com.liguoliang.Class2″>
<source-path path-element= “E:/Projects/FLEX/TestApp/src” />
</compc>
</target>
compc要求使用include-classes指定参与打包的Class, 一个半个类倒也无所谓, 一个个写上就可以了, 但问题是成百上千个, 写的完也写乱套了. 于是出现如下ANT命令, 帮助生成指定目录下的所有AS Class的PackageName:
注意: 部分变量定义没贴出来. 领会意思就ok.
<fileset dir=”${src-dir}” id=”src.files“>
<include name=”**\**”/>
</fileset>
<echo message=”${src-dir}” />
<pathconvert
property=”build-classes”
pathsep=” ”
dirsep=”.”
refid=”src.files”
>
<map from=”\” to=”/”/>
<map from=”${src-dir}/” to=””/>
<mapper>
<chainedmapper>
<globmapper from=”*.as” to=”*”/>
<!–globmapper from=”*.mxml” to=”*”/–>
</chainedmapper>
</mapper>
</pathconvert>
<echo message=”Class is set to: ${build-classes}”/>
使用$build-classes作为compc的include-classes的Value再进行Build就可.
另: 可在compc中, 可使用external-library-path增加外部SWC:
<external-library-path file=”somdir/common.swc” append=”true”/>
See:
1. Using the compc task
2. Using compc, the component compiler
3. Working with compiler options – 同时适用于mxmlc与compc
4. Flex compc & ant 编译
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.