-------------------------------------------------------------------------------------------------------------------------------------------------------------------
参考:
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(命令行方式),终端执行:
mvn archetype:generate -DarchetypeRepository=http://repository.sonatype.org/content/groups/flexgroup -DarchetypeGroupId=org.sonatype.flexmojos -DarchetypeArtifactId=flexmojos-archetypes-modular-webapp -DarchetypeVersion=3.7.1
根据提示依次输入 groupId、 artifactId、version、package,确认后进行构建,构建成功会产生如下结构的项目文件夹(testwebapp 为我输入的 artifactId 值):
注:由模板生成项目基础结构这一步,在几款IDE(本身支持Maven或安装Maven插件)中,在新建工程的向导引领下,同样可以完成。
2、默认创建出来的项目所使用的FlexSDK版本为3.2.0.3958,想要构建Flex4项目需要修改以下几处:
1) 编辑 %artifactId% / pom.xml , 增加 仓库配置 和 FlexSDK 版本属性,修改后的 pom.xml 如下:
4.0.0 org.llp.flex testwebapp 1.0-SNAPSHOT pom swc swf war 4.1.0.16248 flexmojos http://repository.sonatype.org/content/groups/flexgroup/ true true flexmojos http://repository.sonatype.org/content/groups/flexgroup/ true true
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文件大部分是相同,故下面省略了一些内容):
org.llp.flex testwebapp 1.0-SNAPSHOT src/main/flex src/test/flex org.sonatype.flexmojos flexmojos-maven-plugin 3.7.1 true wrapper en_US 10.0.0 com.adobe.flex compiler ${flex.sdk.version} pom com.adobe.flex.framework flex-framework ${flex.sdk.version} pom
3、编译项目,终端执行:
mvn install
过程中会调用FlashPlayer进行单元测试,成功后可以在各模块的 target 文件夹下找到编译后的成品;
其中 %artifactId% / swf / target 下有一个 html 文件,浏览器打开该文件,可以看到 Hello World! 。
至此,构建过程实践成功。
四、 在IDE下使用该项目(承接上文步骤)
1、IDE 为 Flex/Flash Builder 或 Eclipse
1) 生成 Flex/Flash Builder 项目文件,终端执行:
mvn flexmojos:flexbuilder
2) 运行 IDE,导入该项目即可。
2、IDE 为 Intellij IDEA
1) 编辑 %artifactId% / swc / pom.xml 和 %artifactId% / swf / pom.xml, flexmojos-maven-plugin 下增加一项配置,修改后的 pom.xml 片段如下:
src/main/flex src/test/flex org.sonatype.flexmojos flexmojos-maven-plugin 3.7.1 true wrapper en_US true 10.0.0 com.adobe.flex compiler ${flex.sdk.version} pom
2) 编译项目,终端执行:
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。