`
SSailYang
  • 浏览: 313096 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用 Maven 管理 Seam 项目

阅读更多

在学会用 Maven 之后,有一种要将所有项目都使用 Maven 管理的冲动,当然 Seam 项目也不例外。之前曾花过一天的时间,尝试将使用 EJB 的 Seam 项目使用 Maven 进行管理。结果很不理想,虽然理论上可行,但是项目结构过于复杂。除了要建立根项目外,还要在根项目下建立3个模块:分别是 EAR 模块、EJB 模块和 WAR 模块,而且在部署的时候老出错。没办法,使用 EJB 的 Seam 项目的包依赖关系太复杂了,而且 JBoss 使用起来也比 Tomcat 麻烦。同时,Maven 的 POM 文件写起来也很麻烦。所以,最后还是放弃了这个念头。

 

        在那次不成功的尝试之后,我曾反思了一下。其实,对于使用了 EJB 的 Seam 项目而言,完全使用 Maven 并不是一个太好的选择。比较实际的做法是使用 Maven 管理依赖的类库,构建和部署则使用 Ant 来完成。不过,我的这个想法并没有实现。

 

        最近,在看 Java EE 领域技术新变化的相关文章的时候,我发现自己犯了一个比较根本的问题,为什么 Seam 的项目一定要和 EJB 扯上关系。虽然 Seam 的一个最主要,也是最大的贡献就是很完美地将 JSF 和 EJB3 结合了在一起,但这并不意味着 Seam 项目就一定要用 EJB3 (这个问题其他人可能都看明白了,只有我比较愚钝)。其实 Seam 为 POJO 提供了很多 EJB3 的特性,这里我就不一一列举了,文档和《Seam in Action》那本书里都有。对于是否使用 EJB 这个问题,我的观点是先要了解 EJB 都能提供哪些 POJO 不能提供的特性,除非非常必要,否则不要使用 EJB。

 

       仔细看看 Seam 提供的例子,有哪些非得要用 EJB3(对于这个问题,欢迎大家讨论)。至少 Booking 那个不用吧,Seam 里的那个 Hibernate 例子也使用了去掉 EJB 的 Booking 例子。

 

       不过,在 Java EE 6 推出之后,使用 EJB 将变得更加简单。具体内容可以看我另一篇文章:《EJB 3.1 会给我们带来什么 》呵呵

 

       说了这么多,该说正题了。去掉 EJB 的 Seam 项目很容易用 Maven 管理,不就是一个 WAR 项目嘛。DZone 上有一篇关于 Seam 与 Maven 的文章。不过这篇文章里提到的例子太简单,所以我自己拿 Seam 里的那个 Hibernate 例子为基础,试着用 Maven 管理。实际上很简单,基本上就是配置类库就行了。但是如果不做的话也不知道是简还是繁,毕竟有些东西实际做了才会发现。

 

       具体内容没什么太多值得说的,我直接把代码放上来好了。

分享到:
评论
9 楼 yawei 2010-10-29  
you are gonna like this

Seam, EJB's and EAR-packaging in Maven

http://kasper.eobjects.org/2009/04/seam-ejbs-and-ear-packaging-in-maven.html
8 楼 zhmore 2010-10-26  
最近学习maven,可以用它来搭建简单结构为"jar+ejb+war"的项目,最终打包为ear,最终把打包的ear发布到jboss上。当然也可以在jetty上运行(这个在开发阶段比较实用)。基本流程已经跑通。感觉呢,maven这个东西确实比较强大,但是学习成本太高,java的东西就是这个鸟样,虽然强大,但很繁琐,简单的东西非得搞复杂。
7 楼 joy9858 2010-08-27  
最近在研究maven,但是就不知道怎么将项目打成ear包,提供给jboss用
6 楼 dearshor 2009-01-03  
5 楼 SSailYang 2008-12-29  
atusoft 写道

maven确实比较烦,不如ant直观

直观?此话何意?

各有所长。
4 楼 atusoft 2008-12-25  
maven确实比较烦,不如ant直观
3 楼 SSailYang 2008-12-13  
根据软件规模的大小而将软件划分为多个模块,同时使用 Maven 进行管理。这一点我是同意的,这也是 Maven 的优势所在。软件的项目结构复杂与否只是相对而言。我的意思只是说对于 Seam 中 Booking 这个例子,如果在使用 EJB 的情况下,使用 Maven 管理项目显得有点麻烦,并不是说分为三个模块就一定是一个复杂的结构。

这篇文章其实有抛砖引玉的作用。我在使用 Maven 管理 EAR 项目时有点问题,通过这篇文章交流一下也能学到更多的东西。
2 楼 dearshor 2008-12-12  
引用
在学会用 Maven 之后,有一种要将所有项目都使用 Maven 管理的冲动,当然 Seam 项目也不例外。之前曾花过一天的时间,尝试将使用 EJB 的 Seam 项目使用 Maven 进行管理。结果很不理想,虽然理论上可行,但是项目结构过于复杂。除了要建立根项目外,还要在根项目下建立3个模块:分别是 EAR 模块、EJB 模块和 WAR 模块,

恕我直言,你说你已经“学会用 Maven”了,我说你还没真正会用,还没真正明白maven到底能带给你什么。

就因为“还要在根项目下建立3个模块”,你就认为“项目结构过于复杂”啦?我问你,为什么要用maven?如果你说仅仅是为了解决依赖管理问题,那用ant+ivy一样可以实现,用不着maven。你下面还提到
引用
比较实际的做法是使用 Maven 管理依赖的类库,构建和部署则使用 Ant 来完成。

那正好啊,全部用ant不就得了吗?为什么还搞个maven来自找麻烦?

maven不仅限于一个build tool,而是一个软件工程管理工具,它所能做的,覆盖到了软件工程的各个生命周期。这是maven和ant的本质区别,它们不是一个级别上的东西,没有可比性。

就你这里的问题来说,使用maven除了解决依赖管理问题(第三方artifact),还能解决你自己的project的模块化的问题。为什么要模块化?如果你只是做做小project,通常都是单兵作战的话,那是没这个必要(这样的话,你也完全没必要使用标准的Java EE 5 packaging,分什么war module,ejb module,最后打成EAR package。一个war package全部能搞定了)。

反之,如果你的这个project比较大,参与协同开发的人很多,并且是多人,甚至多个team同时开工的,这个时候你还能一个war全部搞定?不乱套才怪!!这个时候就需要把你的project尽可能的模块化,模块化才是maven的核型理念之一!!你想过你开发的这个模块,也完全可以作为第三方artifact(已经build好了的,并经过足够的test的稳定版本,而不仅仅是一堆没有兼容性保证的源代码)提供给其他team或你team里的其他人用吗?这个就是maven的魅力之一。maven适合于团队协作开发,团队越大,受益越大;单兵作战不需要maven!

是否使用EJB,那是你的自由,要根据你的project需要而定。所以你说
引用
为什么 Seam 的项目一定要和 EJB 扯上关系。

这我没意见。

但你说
引用
而且在部署的时候老出错。没办法,使用 EJB 的 Seam 项目的包依赖关系太复杂了,

我严重不同意!你知道maven dependency tree里的transitive artifact的概念吗?A依赖于B,B依赖于C,你只要把B加入A的dependencies里,自然就把C也加入到A的dependency tree里了。明白了吗?你只要添加直接依赖即可。这样还觉得复杂吗?

最后给你提供一些maven相关的资源吧:
  • 我将seam分发包里的DVDStore example改成了基于maven的project,使用了ejb,供你参考,你看看到底难不难:
  • project url:http://code.google.com/p/keepleaping/source/browse/#svn/trunk/seam/JbossSeamSamples/dvdstore
  • svn repo url:http://keepleaping.googlecode.com/svn/trunk/seam/JbossSeamSamples/dvdstore/


  • maven中文社区:http://groups.google.com/group/maven-zh
1 楼 wetouns 2008-12-11  
自己构建一个带EJB的SEAM项目实在是太难了,活受罪呀,不过做出一个archetype来以后复用就没这么痛苦

相关推荐

    jboss seam maven ant jdk

    Apache Maven 3.8.1-bin.zip是Maven的最新稳定版本,它极大地简化了Java项目的构建过程,通过使用XML格式的配置文件来管理项目依赖、构建生命周期和插件。 **Ant** 是Apache软件基金会的另一个项目,它是Java平台上...

    maven+jetty+seam+hibernate

    这个组合充分利用了Maven的项目管理和构建能力,Jetty的轻量级服务器特性,Seam的Java EE集成框架,以及Hibernate的持久层解决方案,为开发者提供了一个高效、便捷的开发平台。 **Maven**是Apache软件基金会开发的...

    Seam-gen生成基础项目骨架

    Seam-gen 是一款用于快速生成基于 Seam 框架的基础项目结构的工具,它通过简单的命令行交互式过程,帮助开发者构建项目的雏形,并且能够根据数据库信息自动生成管理数据库的 CRUD(Create, Read, Update, Delete)...

    Seam项目源代码(基于JBoss和EJB3,JSF的项目源码)

    2. **配置文件**:如`pom.xml`(Maven项目配置)、`jboss-seam.properties`(Seam配置)、`faces-config.xml`(JSF配置)和`ejb-jar.xml`(EJB配置)等。 3. **测试代码**:可能包含单元测试和集成测试,帮助验证...

    eclipse 工程seam 例子2

    这个项目可能是为了演示如何在Eclipse集成开发环境中设置和运行一个包含Seam、EJB和JSF组件的应用程序。下面将详细解释这些关键概念和技术。 **Seam框架**:Seam是一个全面的Java EE开发框架,它简化了企业级应用的...

    为Seam做好准备

    6. **Seam配置**:`seam-getting-started-build.xml`文件很可能是Seam项目的构建文件,可能包含Maven或Ant的配置信息,用于编译、测试和打包项目。理解如何配置Seam项目以及依赖管理是非常重要的。 7. **开发环境**...

    Jboss seam3 实战

    - Maven3作为一个项目管理和构建自动化工具,广泛用于JBoss Seam项目。 - Tomcat7支持Servlet 3.0规范,与Seam框架兼容。 6. JSF2: - JSF2(JavaServer Faces 2.0)是基于Java EE的一个用于构建组件驱动的用户...

    jboss seam 2.01GA REF DOC

    - **构建项目**:使用 Maven 或 Ant 构建示例项目。 - **部署应用**:将构建好的 WAR 文件部署到 JBoss AS 中。 - **测试应用**:启动服务器并通过浏览器访问示例应用。 **1.1.2 在 Tomcat 上运行示例** - **准备...

    JBoss encore 工程和maven仓库

    Maven是一个项目管理和综合工具,它通过定义项目的结构、依赖关系和构建过程,帮助开发者管理项目生命周期。在Encore工程中,Maven仓库存储了项目所需的各种依赖库,如JAR文件,确保了开发环境的一致性和可重复性。...

    seam创建工程

    如果使用Maven,可以在命令行或Maven的POM.xml文件中定义Seam相关的依赖。 3. **配置文件**:Seam工程的核心配置文件包括`components.xml`和`seam.properties`。`components.xml`用于声明和配置Seam组件,而`seam....

    seam-forge dist

    3. **自动构建**:支持Maven集成,可以使用`seam build`进行项目的自动化构建。 4. **部署与运行**:`seam deploy`命令能将项目部署到服务器上,便于测试和运行。 5. **测试管理**:提供对JUnit测试的支持,方便进行...

    seam 的eclipse工程例子3

    - 相关的配置文件,如`pom.xml`(如果使用Maven构建),`seam.properties`,`web.xml`和`faces-config.xml`。 - 可能还会有数据库连接配置和实体类,如果示例涉及到了数据持久化。 通过学习和实践这个例子,你可以...

    整合了seam的一些资源

    2. `examples`或`samples`:可能包含了一些示例项目,帮助开发者了解如何使用Seam框架构建实际应用。 3. `docs`或`documentation`:可能包含了Seam的官方文档,包括用户指南、API参考等,对于学习和理解Seam的功能和...

    Maven 的41种骨架功能介绍

    Maven profiles使得在同一项目中管理不同的环境配置成为可能。 #### 15. internal->maven-archetype-quickstart() 该骨架用于创建一个快速入门项目,通常包含最基本的项目结构和依赖关系。 #### 16. internal->...

    seam的使用说明文档

    - **Seam-gen**:Seam-gen是一个基于Maven的工具,可以帮助开发者自动生成项目骨架、表单和其他基础组件,大大提高了开发效率。 - **集成现有数据库**:Seam还提供了便捷的方式来从现有的数据库生成应用模型,这有助...

    JBoss encore 工程和maven仓库7.31

    Maven是Apache项目下的一个构建工具,它管理项目的依赖关系,通过配置文件POM.xml来自动化构建流程。Maven仓库则存储了各种开源项目的JAR文件,供开发者在构建项目时引用。在"maven仓库和cvs源码更新"的描述中,意味...

    JBoss Seam3

    - **Maven依赖配置**:对于使用Maven作为构建工具的项目,可以通过在`pom.xml`文件中添加适当的依赖来引入Seam3库。 ##### 2.2 配置 - **Maven依赖配置**:在项目的`pom.xml`文件中加入以下依赖: ```xml ...

    seam+spring+hibernate+richfaces配置

    6. **应用上下文集成**:在Seam中,使用SpringBean注解来注入Spring管理的bean;在Spring中,使用SeamComponent注解来注入Seam组件。 7. **测试和调试**:确保所有组件都能正常启动并协同工作,进行单元测试和功能...

    Seam-无缝集成JSF

    1. **安装依赖**:通过Maven或Gradle等构建工具添加Seam及相关依赖到项目的构建文件中。 2. **配置环境**:根据项目需求配置Seam的相关属性,比如上下文生命周期管理、URL映射规则等。 3. **编写组件**:利用Seam...

Global site tag (gtag.js) - Google Analytics