用Maven做项目管理

本文来自www.openfans.org,预知详情,请访问www.openfans.org

Maven做项目管理

Java世界中我们很多的开发人员选择用Ant来构建项目,一个build.xml能够完成编译、测试、打包、部署等很多任务,但我们也碰到了很多的问题,如jar文件管理混乱,各个项目结构和build.xml相差很大等等。而Maven的出现,给项目提供了更多的支持。

1        简介

Maven作为Apache的一个开源项目,旨在给项目管理提供更多的支持,主页地址为http://maven.apache.org 。它最早的意图只是为了给apache组织的几个项目提供统一的开发、测试、打包和部署,能让开发者在多个项目中方便的切换。很多伟大的事业,出发点都很简单,ebay就是很好的例证。而maven的成功又一次验证了这一点,越来越多的项目开始使用maven

基本原理

Maven的基本原理很简单,采用远程仓库和本地仓库以及一个类似build.xmlpom.xml,将pom.xml中定义的jar文件从远程仓库下载到本地仓库,各个应用使用同一个本地仓库的jar,同一个版本的jar只需下载一次,而且避免每个应用都去拷贝jar。如图1。同时它采用了现在流行的插件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,所以maven下载很小(1.1M),在执行maven任务时,才会自动下载需要的插件。

这个基本原理与Pear――PHP扩展与应用库(the PHP Extension and Application Repository)的原理非常相似,都有一个官方的仓库,都是微内核,通过网络将需要的文件下载到本地,通过官方仓库将相应的类库进行统一管理。Pear已经成为PHP开发事实上的标准,而MavenJava世界的地位也逐渐加强,成为标准指日可待。

另外由于插件的易开发性,现在有了非常多的可供选择的插件,如与eclipse结合的插件,与test相关的插件,后面我们结合maven在项目中的使用进行详细介绍。

1

2        项目管理

Maven官方把maven定义为一个项目管理工具,我们不妨看看maven能给我们的项目提供哪些好的支持。

2.1       项目标准化

Maven一个重要特性是定义了项目的标准模板,官方说法是最佳实践。可以通过命令:mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app创建一个单一的maven项目。创建好的项目,具有了特定的项目结构。这个项目结构是参考业界的最佳实践而成,为后面使用统一的maven命令打下了基础,如测试mvn test、打包mvn package等,无需写一行脚本,就可以方便的实现众多功能。Maven还提供其它一些类型模板,可以通过添加-DarchetypeArtifactId=type}创建,如-DarchetypeArtifactId=maven-archetype-site,生成site类型的项目。

同时一些好的开源软件使用了maven,也能作为很好的项目模板,如EquinoxAppfuse的简化版),它的pom定义了对hiberante,spring…的依赖,可以通过ant new -Dapp.name=NAME快速生成项目原型,然后对pom文件进行裁减,以符合自身项目的需要。

有了这个标准,项目间能方便的进行交流,你也很容易了解其它使用maven项目的结构。对于企业来说,引入maven就自然引入了规范,这可比费时费力的写文档,定规范有效的多了。

2.2       文档和报告

使用mvn site可以快速生成项目站点,apache很多开源项目站点都采用maven生成,会出现built by maven字样的图标。

maven提供的针对如junitcheckstylepmd等的插件,能够方便的进行测试和检查并能直接生成报告。使用都很简单,如mvn surefire-report:report 就能自动进行junit测试,并生成junit报告,mvn pmd:pmd生成pmd报告。具体使用可以在http://maven.apache.org/plugins/index.html找到。

2.3       类库管理

Maven一个很重要的特色就是类库管理。通过在pom.xml中定义jar包版本和依赖,能够方便的管理jar文件。以下是一个简单的jar定义片断:

<dependency>                                                                      

      <groupId>org.hibernate</groupId>

      <artifactId>hibernate</artifactId>

      <version>3.1</version>

      <type>jar</type>

      <scope>runtime</scope>

  </dependency>

这个片断告诉我们,依赖的jargroupIdorg.hibernateartifactIdhibernate,版本为3.1scoperuntime。在实际项目中,会将M2_REPO(maven本地仓库地址)/ org/hibernate / hibernate /3.1/ hibernate -3.1.jar放入classpath

同时maven会通过pom.xml管理jar包间的依赖。比如上面的hibernate-3.1.jar同级目录肯定会有一个hibernate -3.1.pom,在这个pom文件中指定了这个jar对其它一些jar的依赖。而这个pom文件是远程仓库提供,无需进行修改,执行maven相关命令就会自动根据相关依赖去下载jar包。这样只需定义对hibernate的依赖而无需关心相关jar,在构建项目上方便了很多。

因为pom文件对jar的管理,也产生了一个很吸引人的特性:项目文件很小。以往一个web项目中,jar文件都要放入WEB-INF/lib下,并放入cvs(svn)中,很容易就达到几十M。而通过maven,只需一个pom.xml,在执行mvn eclipse:eclipse时再去远程仓库下载,项目文件一般只需几百K

2.4       发布管理

使用maven可以方便的进行项目发表管理。在项目开发到一定阶段,可以使用mvn package打包,它会自动先运行mvn test,跑所有的testcase,只有全部通过才能正确打包。生成的war包(如果项目的packagingwar)在target目录下。这个war包与使用ant脚本生成一样,但无需一行脚本,这也是maven对比ant的优势之一。使用mvn install将编译和打包好的文件发布到distributionManager指定的远程repository。使用mvn deploy可以自动管理项目版本。

 

3        使用maven

Maven使用简单,插件丰富且经过大量项目考验,在项目中引入的风险很小。笔者在项目中使用maven,新进员工在半小时内就能成功使用maven构建项目,并很快掌握几个常用的命令。Maven也不需要什么特殊的设施。如果项目全部使用开源软件,并且不需要maven管理项目版本,只需要一个SCM环境(CVSSVN),共享开发源码就可以。把pom.xml中的repository设为官方地址就行,配置如下:

<repository>

      <id>central</id>

      <url>http://www.ibiblio.org/maven2</url>

</repository>

这个官方remote repository上有非常多的开源软件,应该能满足大部分项目的需要。如果有项目需要而它上面暂时还没有的软件,或者希望使用公司内部的软件,那么就需要自己配置一个repository了。

3.1       自建私服

传奇私服大家应该都听过,一个网吧自己搞个私服,一伙人免费在上面砍杀。官方因此少赚了很多钱,因此总想打击。而maven官方却对自建私服很是支持,我们总算可以正正当当搞把私服了(Springside的老大江南白衣就是创建私服的好手)。我们就来介绍下自建私服的最快方法。

首先需要一个http server,找台服务器装上apache就行。放一个空的maven目录到htdocs下,假设服务器ip192.168.0.1,确认能用http://192.168.0.1/maven访问到。然后在自己机器上装好maven2,初始化好项目,在pom.xml放入需要的jar定义,运行如mvn eclipse:eclipse就自动从官方下载jar到本地,如果不做配置,默认本地repository${user.home}/.m2/。对于windows xp来说一般在C:/Documents and Settings/username%/.m2下,其中%username%为操作系统登录用户名。这时你可以看到${user.home}/.m2/下多了个repository目录,里面有很多的项目相关jar,目录按groupId/ artifactId/version排好。把repository目录整个拷贝到apache服务器的maven目录下,如果需要官方缺少的jar或公司内部jar,仿照这个目录结构,做好jar放到maven目录下。自建私服成功!

要使用私服,只需修改pom.xml,在repository配置后加上:

<repository>

      <id>companyName</id>

      <url>http:// ${ip}/maven</url>

</repository>

这样需要下载jar时,会先到本地repository查看,没有下载过再到官方搜索,没有找到再到后面的repository查找。

3.2       安装配置

Maven的安装很简单:

1.         apache网站上下载maven安装包,实际上就是个压缩文件。将其解压到你想要存放maven的目录中。在这里假设你将maven解压到C:/Program Files/Apache Software Foundation/maven- 2.0.4 中。

2.      C:/Program Files/Apache Software Foundation/maven- 2.0.4 /bin设到你的系统环境变量%PATH%中。

3.      同时确保你已经将你的JDK安装目录设为java_home系统变量。

4.         打开个命令行窗口,运行mvn –version验证是否安装成功。

5.         如果使用eclipse,在运行mvn eclipse:eclipse生成eclipse项目文件后,需加入M2_REPOClasspath Variables中,指向本地repository,例如:C:/Documents and Settings/Owner/.m2/repository

3.3       基本使用流程

在项目进程中,不必做什么配置,在pom.xml同级目录,cmd使用简单的maven命令,就可以完成初始化->开发->测试->发布的全过程。Maven的基本使用流程如下图:

其中在初次使用命令mvn eclipse:eclipse时会下载很多的插件和jar,可能需要较长的时间,建议泡杯咖啡,和同事吹吹牛。如果失败,可能是网络问题,可以重新运行mvn eclipse:eclipse,已下载好的插件和jar不会再下。运行mvn testmvn package等命令,产出物都会放在target目录下。如果在使用过程中有什么问题,也可以和我联系,mail:pesome@gmail.com,我们一起来尝试解决。

 

总结:

Maven作为新的项目管理工具,简单易用,能对项目的各个阶段提供大力支持,同时由于它易扩展的插件体系架构,出现了越来越多的插件,也使得其功能更加强大。短短一篇文章,实在很难把其特点一一尽述,maven还有很多好用的功能和插件等待我们去使用和开发。而学习新技术的最好方式就是实践,大家如果有兴趣,尽快下载一个最新版,开始你的maven之旅吧!

 

 

参考文档:

1.       http://maven.apache.org 官方网站文档

2.       http://www-128.ibm.com/developerworks/cn/opensource/os-maven2/ Maven2的新特性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值