`
shlei
  • 浏览: 287984 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

用Maven构建Flex4项目实践记录

    博客分类:
  • FLEX
阅读更多
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
参考:
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 如下:
<?xml version="1.0"?>  
<!--  
    Copyright 2008 Marvin Herman Froeder  
    Licensed under the Apache License, Version 2.0 (the "License");  
    you may not use this file except in compliance with the License.  
    You may obtain a copy of the License at  
  
        http://www.apache.org/licenses/LICENSE-2.0  
    Unless required by applicable law or agreed to in writing, software  
    distributed under the License is distributed on an "AS IS" BASIS,  
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
    See the License for the specific language governing permissions and  
    limitations under the License.  
-->  
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  <groupId>org.llp.flex</groupId>  
  <artifactId>testwebapp</artifactId>  
  <version>1.0-SNAPSHOT</version>  
  <packaging>pom</packaging>    
  
  <modules>  
    <module>swc</module>  
    <module>swf</module>  
    <module>war</module>  
  </modules>  
  
  <!-- Flex SDK版本属性 -->  
  <properties>  
    <flex.sdk.version>4.1.0.16248</flex.sdk.version>  
  </properties>  
  
  <!-- Flex framework 和 Flexmojos 仓库 -->  
  <repositories>  
    <repository>  
      <id>flexmojos</id>  
      <url>http://repository.sonatype.org/content/groups/flexgroup/</url>  
      <releases>    
        <enabled>true</enabled>    
      </releases>    
      <snapshots>    
        <enabled>true</enabled>    
      </snapshots>    
    </repository>  
  </repositories>  
  
  <pluginRepositories>  
    <pluginRepository>  
      <id>flexmojos</id>  
      <url>http://repository.sonatype.org/content/groups/flexgroup/</url>  
      <releases>    
        <enabled>true</enabled>    
      </releases>    
      <snapshots>    
        <enabled>true</enabled>    
      </snapshots>    
    </pluginRepository>  
  </pluginRepositories>  
  
</project>  

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文件大部分是相同,故下面省略了一些内容):
<!--此处省略-->  
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  <parent>  
    <groupId>org.llp.flex</groupId>  
    <artifactId>testwebapp</artifactId><!--此处按实际的artifactId值进行修改-->  
    <version>1.0-SNAPSHOT</version>  
  </parent>  
  
<!--此处省略-->  
  <build>  
    <sourceDirectory>src/main/flex</sourceDirectory>  
    <testSourceDirectory>src/test/flex</testSourceDirectory>  
    <plugins>  
      <plugin>  
        <groupId>org.sonatype.flexmojos</groupId>  
        <artifactId>flexmojos-maven-plugin</artifactId>  
        <version>3.7.1</version>  
        <extensions>true</extensions>  
        <!-- 生成一个调用SWF的HTML文件(%artifactId% / swf / pom.xml 独有配置) -->  
        <executions>  
          <execution>  
             <goals>  
              <goal>wrapper</goal>  
            </goals>  
          </execution>  
        </executions>  
        <configuration>  
          <locales>  
            <locale>en_US</locale>  
          </locales>  
          <!-- 指定Flash Player版本 -->  
          <targetPlayer>10.0.0</targetPlayer>  
        </configuration>  
        <!-- 指定编译版本 -->  
        <dependencies>  
          <dependency>  
            <groupId>com.adobe.flex</groupId>  
            <artifactId>compiler</artifactId>  
            <version>${flex.sdk.version}</version>  
            <type>pom</type>  
           </dependency>  
        </dependencies>  
      </plugin>  
    </plugins>  
  </build>  
  
  <dependencies>  
    <dependency>  
      <groupId>com.adobe.flex.framework</groupId>  
      <artifactId>flex-framework</artifactId>  
      <version>${flex.sdk.version}</version>  
      <type>pom</type>  
    </dependency>  
  
<!--此处省略-->  
  </dependencies>  
  
<!--此处省略-->  
</project>  

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 片段如下:
<!--此处省略-->  
  <build>  
    <sourceDirectory>src/main/flex</sourceDirectory>  
    <testSourceDirectory>src/test/flex</testSourceDirectory>  
    <plugins>  
      <plugin>  
        <groupId>org.sonatype.flexmojos</groupId>  
        <artifactId>flexmojos-maven-plugin</artifactId>  
        <version>3.7.1</version>  
        <extensions>true</extensions>  
        <!-- 生成一个调用SWF的HTML文件(%artifactId% / swf / pom.xml 独有配置) -->  
        <executions>  
          <execution>  
             <goals>  
              <goal>wrapper</goal>  
            </goals>  
          </execution>  
        </executions>  
        <configuration>  
          <locales>  
            <locale>en_US</locale>  
          </locales>  
          <!-- for using FlexMojos with IntelliJ IDEA -->  
          <configurationReport>true</configurationReport>  
          <!-- 指定Flash Player版本 -->  
          <targetPlayer>10.0.0</targetPlayer>  
        </configuration>  
        <!-- 指定编译版本 -->  
        <dependencies>  
          <dependency>  
            <groupId>com.adobe.flex</groupId>  
            <artifactId>compiler</artifactId>  
            <version>${flex.sdk.version}</version>  
            <type>pom</type>  
           </dependency>  
        </dependencies>  
      </plugin>  
    </plugins>  
  </build>  
  
<!--此处省略-->  

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。

来自http://coffeelover.iteye.com/blog/748912
分享到:
评论
4 楼 shlei 2011-10-13  
tangduDream 写道
  请问一下,为什么 我打包项目时候 install 时候 war中的classes 中没有编译后的class 文件 而且lib 下面也没有jar

  

那应该是编译没成功,看一下你的编译配置是否正确,希望能帮到你,:)
3 楼 tangduDream 2011-10-13  
  请问一下,为什么 我打包项目时候 install 时候 war中的classes 中没有编译后的class 文件 而且lib 下面也没有jar

  
2 楼 shlei 2011-01-27  
bencmai 写道
flexmojos 实际项目整合时,不是那么容易搞哟

多谢提醒,公司项目已经在用了,我后面可能需要接触到,所以就找了资料,有时间去实践一下。
1 楼 bencmai 2011-01-27  
flexmojos 实际项目整合时,不是那么容易搞哟

相关推荐

    使用Maven构建多模块项目

    在软件开发过程中,尤其是大型项目,模块化设计是不可或缺的,它可以提高代码的可维护性和重用性。Maven作为Java领域广泛使用的...实践中,需要灵活运用Maven的各种特性,结合最佳实践,以构建高效、稳定的多模块项目。

    swf.rar_flex_maven 编译flex_maven flex pom_maven flex 编译_swf开发

    标题"swf.rar_flex_maven 编译flex_maven flex pom_maven flex 编译_swf开发"明确指出我们将讨论使用Maven来构建SWF(ShockWave Flash)文件的Flex项目。SWF是Adobe Flash Player播放的文件格式,通常用于在网络...

    maven构建的java项目demo

    【 Maven 构建的 Java 项目 Demo 深度解析】 在软件开发中,Maven 是一个广泛应用的项目管理和综合工具,尤其对于Java开发者来说,它简化了构建、依赖管理和项目文档生成的过程。本篇文章将深入探讨 Maven 如何用于...

    Maven构建全栈式Flex、BlazeDS和Spring集成解决方案–第一部分_创建Maven_Flex模块

    本节将详细介绍如何使用Maven创建Flex模块,以及如何逐步构建一个使用Flex/BlazeDS/Spring/Hibernate/MySQL架构的示例项目。该应用是一个标准的任务清单(to-do list)应用,用户可以添加、删除和编辑任务列表。 **1....

    使用maven构建springMVC项目

    ### 使用Maven构建SpringMVC项目的详细步骤及关键知识点 #### 标题解析与核心知识点说明 - **标题**:“使用maven构建springMVC项目” - **核心知识点**:本篇文章主要围绕如何利用Maven工具来搭建SpringMVC框架...

    Eclipse使用Maven构建web项目视频教程

    本教程提供的"用maven新建web项目.exe"可能是一个辅助工具,用于指导用户手动执行上述步骤,而"使用Eclipse构建web项目.txt"可能包含了详细的文字说明或步骤。通过学习这些资料,开发者可以掌握使用Eclipse和Maven...

    Maven构建ssh项目实例

    Maven通过使用一个项目对象模型(Project Object Model,POM)来描述项目,并通过插件执行构建任务。POM包含了项目的配置信息,如依赖、构建目标、构建过程等。Maven通过中央仓库下载项目所需的库文件,极大地简化了...

    maven构建项目工程

    Maven是一个强大的项目管理和构建工具,它简化了Java项目的构建过程,通过标准化构建生命周期和依赖管理,使得开发者可以更专注于代码本身。在"Maven构建项目工程"中,我们可以深入了解Maven如何帮助我们快速、简便...

    maven-3.5.0多工程构建(spring4mvc分子项目)

    maven-3.5.0多工程构建(spring4mvc分子项目) 使用maven构建多模块项目。在一个项目中使用多个模块的一个方法是将模块... maven maven3.5.0 多工程构建 spring4mvc 子项目 maven构建项目 多模块项目 maven构建WEB项目

    使用Maven构建JavaWeb项目实例

    本实例将详细讲解如何使用Maven构建一个完整的JavaWeb项目。以下将围绕Maven的配置、依赖管理、插件使用以及JavaWeb项目的结构等方面进行深入探讨。 一、Maven的简介与安装 Maven是Apache软件基金会开发的一款项目...

    使用Maven构建Spring MVC项目的简单示例

    在本文中,我们将深入探讨如何使用Maven来构建一个基于Spring MVC的Web应用程序。Maven是一个强大的项目管理和依赖管理工具,而Spring MVC是Spring框架的一部分,用于构建动态、交互式的Web应用。通过结合这两个强大...

    用maven构建项目

    作为一个JAVA开发者,经常受到技术框架造型的烦恼本篇主要讲解的是maven自动化你的项目,以国外框架组合appfuse和国内springside为主,让你在短短的时间之内把想要的框架集成,并准备开发

    maven构建 多模块项目

    Maven构建多模块项目是软件开发中的常见实践,尤其在大型复杂项目中,通过模块化管理可以提高代码组织的清晰度和可维护性。Maven是一个强大的项目管理和构建工具,它通过POM(Project Object Model)文件来管理项目...

    maven构建项目可以粘贴的内容

    在软件开发过程中,Maven是一个不可或缺的工具,它是一个项目管理框架,可以帮助开发者构建、管理和部署Java项目。本文将深入探讨Maven的核心概念、配置、依赖管理和生命周期,以帮助你理解如何利用Maven来构建项目...

    gs-maven, 使用 Maven 构建Java项目.zip

    gs-maven, 使用 Maven 构建Java项目 标记项目maven目录你将构建什么。你需要什么。设置了项目项目。定义一个简单的Maven 构建工具。构建Java代码声明依赖项编写测试文件。摘要文件另请参阅本指南引导你使用 Maven

    构建全栈式Flex、BlazeDS和Spring集成解决方案–第一部分 创建Maven Flex模块

    随后,需要在项目的pom.xml文件中引入Flex-mojos依赖,以便能够使用Maven进行Flex项目的构建。 #### 2. 配置Flex-mojos 接下来,配置Flex-mojos插件,指定Flex SDK路径、Flex应用的输出目录、源代码目录等。这一...

    Maven构建Struts项目

    在这个"Maven构建Struts项目"的实践中,我们将探讨如何利用Maven来管理依赖并构建一个基于Struts的Web应用。 **Maven** Maven是一个强大的项目管理和构建工具,它通过XML格式的POM(Project Object Model)文件来...

    Maven构建的分布式demo

    4. **构建流程**:在Maven的生命周期中,`compile`阶段用于编译源代码,`test`阶段运行测试,`package`阶段打包项目,而`install`阶段将打包好的文件安装到本地仓库,便于其他项目引用。在分布式系统中,每个服务都...

    Maven构建多模块项目

    在IT行业中,构建大型软件系统时,有效地管理项目模块及其依赖关系是至关重要的。Maven作为Java领域广泛使用的构建工具,能帮助...通过阅读“构建模块项目的过程记录.txt”文件,你可以进一步了解具体的实践细节。

    使用Eclipse构建Maven项目 配套示例项目源码

    在本文中,我们将深入探讨如何使用Eclipse IDE创建和管理Maven项目,同时结合"使用Eclipse构建Maven项目.pdf"中的配置示例项目源码,来进一步理解这个过程。Maven是一个强大的Java项目管理和构建工具,而Eclipse是广...

Global site tag (gtag.js) - Google Analytics