前段时间研究flex工程自动编译的时候,遇到了阻碍,就放下了,直到今天每日构建的问题又一次给项目组带来了麻烦,于是我彻底愤怒了。
最后,我的怒火没有白费,写出来以发泄情绪。
【基本原理】:
adobe提供了每日构建的方法:利用ant任务以命令行的形式完全模仿flashbuilder/flashbuilder-plugin的【导出发行版】编译方式来编译。
此种方式编译出的swf的性能是最好的。
【实施前准备】:
安装:jdk1.6 32位 (一定要用32位的,如果是64位的操作系统也要安装32的,64和32的jdk可以共存)
安装:flashbuilder/flashbuilder-plugin
【实施】:
1.用flashbuilder/flashbuilder-plugin将flex项目导入,配置好,并可以手动编译成功;
对于使用flashbuilder-plugin的一定要注意这一步,不要使用本地的eclipse来导入项目,要使用plugin来导入配置项目,否则无法进行命令行
编译。
因为用flashbuilder-plugin创建的工作空间下的E:\Jenkins\workspace\.metadata文件夹下,有一些命令行工具要用的东西,例如:flex工程名。
2.写ant的build.xml,build.xml的位置随意放
<?xml version="1.0"?>
<project default="main">
<target name="main">
<fb.exportReleaseBuild project="ims-flex-1.0" />
</target>
</project>
其中target标签中的name="main"就是ant的执行任务名称,project=“ims-flex-1.0”就是指定要编译的flex工程名称
3.编写调用的命令行
set WORKSPACE=E:\Jenkins\workspace REM works with either FlashBuilderC.exe or eclipsec.exe
"D:\Adobe\Adobe Flash Builder 4 Plug-in\eclipse-host-distro\eclipsec.exe" --launcher.suppressErrors -noSplash -application org.eclipse.ant.core.antRunner -data "%WORKSPACE%" -file "%WORKSPACE%\build.xml" main
pause
上面命令是调用plugin中的eclipsec.exe来编译的。如果使用的是flahbuilder则使用flashbuilderc.exe
- WORKSPACE就是eclipse的工作空间
- -file用来指定build.xml的位置
- 最后一个参数main就是指定在build.xml中要执行的任务名称
4.运行批处理,开始自动编译,编译后,进入flex工程目录,其中会有bin-release目录,这里就是编译后的文件。
【吐槽】
adobe的文档写的如此之烂,文字说明根本没用,只能通过揣测批处理的意义,经过多次尝试失败后才最终解决。