Part 1:新建Flex模块
本系列文章共分三篇,我将一步步引导建立一个基于Flex/BlazeDS/Spring/Hibernate/Mysql架构的应用,此应用使用Maven构建。此应用示例完成增、删、改和任务列表。
在开始之前,有两点需要注意:
1、教程的范例应用并非现实生产环境应用,但这并不影响我们讨论的主题:Flex前端和
Spring后台交互。
2、教程将使用flex-mojos Maven plug-in 用来构建Flex应用程序。
准备条件:
有使用Flex Builder开发经验会很受用,但这不是必须的。另外了解BlazeDS对学习本教程也很有帮助。
项目范围
本系统教程的目标是建立一个基于Flex UI的待办事项应用,提供增、删、改和显示任务列表。图1显示了我们将实现的应用程序的全局架构:
示例项目的最大挑战来自配置Maven构建。项目也可以使用Ant来构建,但我不太喜欢编写Ant角本。至于使用IDE构建的项目将取决于某一特定的开发环境,这通常不是一个好主意,因为任何严肃的项目需要有一定程度的测试和持续集成。即使Maven并不完美,但我仍然认为这是最好的解决办法。
至于JBoss,并不硬性需要,完全可以使用Tomcat代之。
建立Maven主项目
首先,我们在使用Maven构建Flex/BlazeDS项目前必须确定正确的配置文件路径。Flex编译器和BlazeDS服务器都需要有描述了AMF Channels、Destinations和Adapters等 的XML配置文件。这些配置文件通常命名为remoting-config.xml和services-config.xml。为了避免配置文件名称重复冲突,一个解决办法是把所有应用打包成一个单独的war包Maven Module。但这同时会带来另外的问题:一个庞大的项目设置是不符合Maven标准的,并且混合了Flex和Java在同一个模块并非最佳。基于此,我决定在root pom-packaged中分离客户端和服务端为两个模块。为避免配置文件重复,我将建立第三个共享模块。
就这样,我们现在开始吧。假定你已经安装了Maven,Java,MySQL,JBoss或Tomcat。
首先,建立root todolist module。使用default archetype创建一个空Maven项目。打开命令行,在你预想的目录下运行下面的命令:
mvn -DgroupId=org.epseelon.samples -DartifactId=todolist archetype:create
以上命令建立一个基本的JAR项目,我们要作进一步修改,步骤如下:
1、在刚建立的项目组构中删除src目录。
2、编辑pom.xml的packaging,把jar替换成pom。
3、增加如下repositories到POM中:
<project> … <repositories> <repository> <id>flex-mojos-repository</id> <url>http://flex-mojos.googlecode.com/svn/trunk/repository/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>epseelon-repository</id> <url>http://m2repo.epseelon.org/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>flex-mojos-repository</id> <url>http://flex-mojos.googlecode.com/svn/trunk/repository/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>epseelon-repository</id> <url>http://m2repo.epseelon.org/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </project>
第一个repository包括flex-mojos,第二个repository包括BlazeDS libraries.
最佳做法是为插件指定一个明确的版本,尤其是因为我们会用到子模块maven-assembly-plugin和maven-dependency-plugin。增加如下build配置到pom.xml文件 :
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.0</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-2</version> </plugin> </plugins> </pluginManagement> </build>
现在我们已经更新了pom.xml文件,随后创建的部分涉及到的Flex模块。接下来我们来讲这部分。
创建Flex Module
创建Flex模块相对简单。有几个Maven Plug-ins可以处理基于Flex的项目,包括ServeBox and Israfil。然而,他们都不适合BlazeDS项目。还好,即时发现了Velo写的flex-mojos。
现在来创建Flex模块,你需要打开一个命令行并将目录指向你期望的地方。然后,运行下面的命令:
mvn archetype:create -DarchetypeArtifactId=maven-archetype-flex -DarchetypeV
ersion=1.0 -DarchetypeGroupId=dk.jacobve.maven.archetypes -DgroupId=cn.org.pomer
.samples -DartifactId=todolist-ria -DpackageName=
这个archetype创建的Flex项目的根目录下创建上述模块,它使用默认的israfil-mojo。所以,一旦你建立了子项目,下一步就是以flex-mojos plug-in代替israfil plug-in配置,如下所示: