用Maven构建Flex4项目实践记录
-------------------------------------------------------------------------------------------
参考:
Maven Reference Chapter 13. Developing with Flexmojos: http://www.sonatype.com/books/mvnref-book/reference/flex-dev.html (将一些前因后果说的比较明确,建议首先阅读)
Flexmojos Homepage: http://flexmojos.sonatype.org/
Getting Started: http://flexmojos.sonatype.org/getting-started.html
wiki: https://docs.sonatype.org/display/FLEXMOJOS/Home
maven与flex的结合(flexmojos): http://reuental.iteye.com/blog/652895
IntelliJ IDEA下使用FlexMojos : https://docs.sonatype.org/display/FLEXMOJOS/Tips+for+using+FlexMojos+with+IntelliJ+IDEA
-------------------------------------------------------------------------------------------
一、相关环境
OS: Ubuntu 9.10
Maven V2.2.1
Flexmojos V3.7.1
Flex SDK 4.1
?
二、准备工作
1、Maven全局设置:增加1个包含Flex framework的仓库
注:根据实践,不设置也可,在pom里指定也是OK的
2、将 Flash Player 加到环境变量 PATH 中以便支持单元测试
注:如果本机有FlexSDK,可在%FLEXSDKHOME% / runtimes/player/ 下找到各OS平台对应的Flash Player 安装文件,安装即可;若本机没有,可以到Adobe网站下载安装。
?
三、构建过程
1、通过模板创建webapp(命令行方式),终端执行:
?
注:由模板生成项目基础结构这一步,在几款IDE(本身支持Maven或安装Maven插件)中,在新建工程的向导引领下,同样可以完成。
?
2、默认创建出来的项目所使用的FlexSDK版本为3.2.0.3958,想要构建Flex4项目需要修改以下几处:
1)? 编辑 %artifactId% / pom.xml? , 增加 仓库配置 和 FlexSDK 版本属性,修改后的 pom.xml 如下:
?
2)? 编辑 %artifactId% / swc / pom.xml? 和 %artifactId% / swf / pom.xml :
???? a) flexmojos-maven-plugin 下增加一些配置(FlexSDK 编译版本、Flash Player 版本等)
???? b) 修改 flex-framework 的版本
???? c) 修正parent 配置段的 artifactId 的值
???? d) 增加 goals 配置(仅 %artifactId% / swf / pom.xml 需要配置)
?
???? 修改后的 pom.xml 如下(2个pom文件大部分是相同,故下面省略了一些内容):
?3、编译项目,终端执行:
mvn install?? 编译后,在各个模块的 target 下会有一个文件名形如 ...config-report.xml 的文件。
?
3) 运行 Intellij IDEA,点击菜单 File -> Open Project, 选择 %artifactId% / pom.xml 即可;
???? 点击菜单 File - Project Structure - Facets - Flex, 可以看到 Flex SDK 的选项中有 compiler-4.1.0.16248.pom 。
?
注:
1) 由于我的OS是Ubuntu,没有相关编辑支持,所以导入IDE后也没有什么实际用处;即使IDE支持,由于项目类型为Maven,所以也得不到像Flex/AIR项目那样的build、run支持,一切都只能通过Maven来进行。
2) Intellij IDEA 下构建该项目获其他Flex项目时,无法选择该SDK ,并且存在一个错误:PHP home is not specified ,尚未解决。
?
?
五、遇到问题与解决
Q1、运行 mvn install 时出现错误:
Flex compiler and flex framework versions doesn't match. Compiler: '3.2.0.3958' - Framework: '4.1.0.16248'.
解决:指定Flex SDK编译版本,详见上文 三 -> 2 -> 2)
?
Q2、运行 mvn install 时在执行 testcase 时失败:
Invalid state: the flashplayer is closed, but the sockets still running...
解决:指定Flash Player版本为10,详见上文 三 -> 2 -> 2)
?
Q3、运行 mvn install 时在执行 testcase 时失败:
Accept timed out .../TestRunner.swf
解决:同 Q2。
?
1 楼 airlink 2010-10-18 能不能反向做:先有FlexBuilder项目,然后配置pom的路径参数,最后可以自动化脚本编译?