前言
maven 是一个优秀的软件工程管理工具,用好它,对你的软件在整个软件工程的各个生命周期里的管理都会有莫大的帮助。下面我结合实例来讲解如何搭建基于maven的开发环境。
预备知识
本文的预期读者是,已经具备了maven基本知识,了解pom的结构、文法的java ee开发人员。
准备工作
本文将采用maven2、eclipse 3.4、m2eclipse、jboss application server 4.2.2、hsqldb 1.8来搭建开发环境。采用jboss seam 2.0.1.GA分发包中的一个example——DVD Store——来示范如何创建、部署、调试一个maven project。
第一步:创建maven multi-module project
正确安装eclipse3.4(我强烈推荐使用eclipse equinox p2 installer 来安装eclipse 3.4 )、m2eclipse(强烈推荐安装完eclipse 3.4以后,使用software updates安装m2eclipse)后,创建一个maven multi-module project是一件很简单的事:
- 先创建一个普通的maven project(不使用额外的archetype,仅仅创建一个最简单的maven project即可),然后打开pom.xml,
- 如果你安装了pom editor(m2eclipse的一个optional feature)的话,就非常简单了,在overview标签页上,点add module按钮,在随后打开的对话框里按向导提示创建一个maven module;
- 如果你没有安装pom editor,你仍然可以使用file->new,在打开的对话框中输入maven module作为filter string,然后选择maven module,随后的步骤同上。
注意:这里创建的maven project和maven module都只要最简单的(不使用额外的archetype)就行。默认情况下,maven module(也是一个eclipse project)会被创建到parent project的目录里(也就是说,会出现嵌套eclipse project。这个功能相信很多人期待已久了吧,现在eclipse上终于可以实现了,哈哈 ):
第二步:配置maven project - 撰写pom.xml
maven的所有核心配置文件、maven一切magic的奥秘,都隐藏在pom里。pom是project object model的缩写,顾名思义,就是对一个project的抽象,将任意一个复杂的project抽象成一个maven能理解的model,maven依赖这个model来对提供project施展它的magic。详情看这里:POM Reference 。
使用m2eclipse的pom editor,可以很方便的编辑pom.xml:
pom中的基础配置,如project命名,parent pom,dependencys,dependencyManagement等,非本文的侧重点,这里就不具体介绍了,如有需要,以后我再写一些maven入门级的文章。下面重点介绍使用maven plugin部署app到jboss application server。
第三步:部署maven project - 作为 Java EE application 部署
这里使用一个maven plugin:org.codehaus.cargo:cargo-maven2-plugin 。 有关在maven中使用jboss as的相关问题,请看我的另一篇文章:
在 maven 中使用 Jboss AS
考虑到实际使用中经常会将app部署不同的application server上,以测试app在不同的server上的兼容性,故将cargo的配置放入一个profile:jboss中。可以根据需要创建不同的profile。这里使用Runtime Configuration (之所以采用这种方式,主要是受cargo的制约,这个以后再写文章来谈),配置如下:
/dvdstore/dvdstore-app/pom.xml
<project> [...] <profiles> [...] <profile> <id>jboss</id> <build> <plugins> <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <configuration> <deployer> <deployables> <deployable> <location>${basedir}/${pom.artifactId}-ds.xml</location> </deployable> <deployable> <groupId>${pom.groupId}</groupId> <artifactId>${pom.artifactId}</artifactId> <type>${pom.packaging}</type> </deployable> </deployables> </deployer> </configuration> </plugin> </plugins> </build> </profile> [...] </profiles> [...] </project>
/seamapp/pom.xml
<project> [...] <build> [...] <pluginManagement> <plugins> [...] <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.0-alpha-6</version> <configuration> <container> <containerId>jboss4x</containerId> <type>remote</type> </container> <configuration> <type>runtime</type> <properties> <cargo.jboss.configuration>${jboss.server.configuration}</cargo.jboss.configuration> </properties> </configuration> <deployer> <!-- Valid types for this deployer are: - remote - installed --> <type>remote</type> </deployer> </configuration> </plugin> [...] </plugins> </pluginManagement> [...] </build> [...] </project>
接下来在eclipse中作为外部工具来配置jboss as launch:
为了debug的需要,加上相应的jvm参数
接下来配置maven build launch:
OK,接下来打包我们的project
然后启动jboss
接着deploy我们的project
然后还可以debug我们的project:
结语
至此,基于maven的Java EE协同开发环境基本搭建起来了。
本文使用的DVD store例子的源码,我已经把它们放到Google Code上,到时如有需要,大家可以随意下载、分发。
- 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/
- project 讨论 :http://groups.google.com/group/keep-leaping
另外向大家推荐一个社区:
- maven中文社区 :http://groups.google.com/group/maven-zh
初次写这样的教程性质的文章,肯定有很多不足之处,敬请谅解。先凑活着看吧。欢迎来拍砖。