一.背景
Maven2 的基本原理很简单,采用远程仓库和本地仓库以及 pom(project object model).xml ,将 pom.xml 中定义的 jar 文件从远程仓库下载到本地仓库,各个应用使用同一个本地仓库的 jar ,同一个版本的 jar 只需下载一次,而且避免每个应用都去拷贝 jar 。如图 1 。同时它采用了现在流行的插件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,所以在执行 maven 任务时,才会自动下载需要的插件。这个特性也为客户系统的升级带来的很大的方便,客户每次升级的时候可以使用maven的远程部署功能自动下载最新的系统组件(jar),并重新打包部署,很大程度的减少的系统升级的工作量。
理解Maven的原理,可以参考 Pear ――PHP扩展与应用库( the PHP Extension and Application Repository ),其原理非常类似,都有一个官方库,都是微内核,通过网络将需要的文件下载到本地,通过官方仓库将相应的类库进行统一管理。
Maven2的基本安装方法网上很多,就到http://maven.apache.org下载一个最新版,解压后即可,如果需要在命令行运行,还需要设置一些环境变量,网上的资料很多,这里就不多说了。总之,安装成功后当你在命令行下执行maven -version后正确显示当前maven的版本即可。
我们在项目中结合maven的进行开发的主要思路:
1.建立支持Maven2的开发框架,框架中结合了一些项目功能和工具类,并且此框架本身是一个eclipse工程,支持使用eclipse IDE的开发,并通过CVS可进行团队协作。
2.在Maven2的pom.xml中制定开发框架的依赖包,并建立依赖包的团队管理本地服务器,使团队中的包依赖得到统一管理。
3.每日下班后,在构建服务器上每日从cvs上下载各个团队开发人员的代码,统一进行集成构建和测试。由于是每日构建,所以发现的bug可及时反馈给开发人员进行修正,避免了一般开发过程中的bug长时间遗留的情况。
二.实施过程
为了实现上述思路,我们分几步实施:
1.首先需要构建一个系统的开发框架,
我们有两种方式构建,
其一是从零开始构建全新的框架,进入commond line,cd 到一个目录 ,执行
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp
执行完毕后接下来cd 到项目目录my-webapp下,执行
mvn package
mvn eclipse:eclipse
之后,打开eclipse,到其目录下导入项目,并手动编辑pom.xml文件,设定指定的jar包,比如加入一个 jwebunit的jar包,我们需要在pom中添加一段:
<dependency>
<groupId>jwebunit</groupId>
<artifactId>jwebunit</artifactId>
<version>1.2</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>rhino</groupId>
<artifactId>js</artifactId>
</exclusion>
</exclusions>
</dependency>
其中指定了包的名称,版本,使用的范围域等,pom.xml设置方式网上也是一堆一堆的,具体的可以自己搜搜。同时我们也可以使用maven2在 eclipse中的插件进行编辑,很方便,就不用记住那些该死的标签了。插件下载地址 http://m2eclipse.codehaus.org /update,将这个url填入到eclipse的Help-》Software Updates->find&install中新建一个插件下载地址的对话框中即可下载。
这种方式是完全自定义一个全新的工程后再进行框架搭建,比较累,尤其是添加依赖包的时候,需要根据自己的项目需要一个一个添加,很烦人,所以我们使用的第二个方法就直接找了一个现成的,到 Appfus 的网站http://appfuse.org/ 根据项目需要下载了一个项目框架作为原型,我们使用的是appfuse-light-webwork-ibatis- 1.8.2(webwork2.26,spring2.0,ibatis2.0),如果你使用的是其他的的技术,如 struts2,hibernate....直接到网站上下载一个相应的框架即可。appfuse框架使用maven2作为基本构建工具,其中自带的 pom.xml也替开发人员写好了,中所定义的依赖包可满足一般的开发需要,如需要自己指定的包,那么直接在其pom.xml中添加即可。要将这个框架作为eclipse工程使用,需要在解压后的框架目录下执行:
mvn eclipse:eclipse -DdownloadSources=true
这个命令会将工程将框架转换为eclipse工程,并从远程下载jar包到本地仓库(window下是 (C:\Documents and Settings\${username}\.m2\repository),之后执行:
mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
其中path-to-eclipse-workspace是本机的eclipse的worksapce的路径。执行后 maven会在eclipse中建立一个M2_REPO环境变量,并将其中所有的jar包引入到工程中,完全自动化,十分方便。
打开eclipse修改开发中的环境变量(我们项目中使用了Myeclipse插件),找到相应的工程,发现框架中已有一些代码,这是appfuse提供给开发人员的示例代码,我们可以按照自己以前项目的积累进行对框架进行完善,形成一套自己的开发框架,之后设置工程环境变量,在该项目中右键 ->Myeclipse->add web capabilities->指定该工作空间下的Src/main/webapps作为WEB工程的根路径,并指定修改JAVA Build Path中
src/main/java
src/main/resource
src/test/java
的三个soucrefolder的outputpath 为scr/main/webapp/WEB-Inf/class,这样设置的目的是便于开发人员在本地进行部署测试,否则按照appfuse原有的工程设置是不能进行顺利部署的。
至此,我们已经将Maven2结合到项目中,一开始可能对目录结构有些不适应,毕竟这是maven提供的项目框架格式,可以修改为自己习惯的,但是不建议这样做。设置完成后,cd到项目路径下,运行
mvn test
mvn package
mvn install
三个命令,均成功后,可上传到cvs/svn上面去,共享给项目组人员,各开发人员可直接使用,但有可能M2_REPO环境设置路径不一样(C:\Documents and Settings\${username}\.m2\repository,毕竟不是所有人都把系统装在C盘),需要手动修改一下。
2. 建立开发团队内部仓库
为了便于团队的依赖包管理,我们不能全部使用官网的仓库,毕竟上面不具备我们项目开发所需要的所有的依赖包,所以我们需要为自己的团队建立一个内部仓库,可以自己管理所需的依赖包,建立一个内部仓库也十分简单(附录中我们会使用artifactory进行开发内部库建立):
首先需要一个 http server ,找台服务器装上 apache 就行。放一个空的 maven 目录到 htdocs 下,假设服务器 ip 为 192.168.0.1 ,确认能用 http://192.168.0.1/maven 访问到。
copy 本地仓库的jar包到服务器:对于 windows xp 来说一般在 C:\Documents and Settings\ % username%\.m2 下,其中% username %为操作系统登录用户名。这时你可以看到 ${user.home}/.m2/ 下有个 repository 目录,里面有很多的项目相关 jar ,目录按 groupId/ artifactId/version 排好。把 repository 目录整个拷贝到 apache 服务器的 maven 目录下,如果需要官方缺少的 jar 或公司内部 jar ,仿照这个目录结构,做好 jar 放到 maven 目录下。或者把包copy到本地,运行:
mvn install:install-file -Dfile=X:/path/mail-1.3.jar -DartifactId=javamail -Dversion=1.3.1 -Dpackaging=jar -DgroupId=javamail
分享到:
相关推荐
采用图例方式将maven管理中需要注意的地方列出来,以方便新的项目搭建框架及开发中注意目录、文件命名及存放要求,方便理解学习maven项目。
使用Maven构建多模块项目
maven项目构建文档maven项目构建文档maven项目构建文档
2.1 项目实例 2.2 多层次项目构建 2.2.1 2.2.2 2.2.3 2.2.4 2.3 系统水平和垂直拆分
maven-3.5.0多工程构建(spring4mvc分子项目) 使用maven构建多模块项目。在一个项目中使用多个模块的一个方法是将模块... maven maven3.5.0 多工程构建 spring4mvc 子项目 maven构建项目 多模块项目 maven构建WEB项目
maven-j2ee-plugin-1.4.jar
Maven2+Eclipse开发J2EE企业级项目。
Maven2+Eclipse开发J2EE.pdf Maven2_基础教程.pdf maven2之m2eclipse使用手册.doc Maven2使用.ppt maven2完全使用手册.docx Maven_介绍培训.pptx Maven学习指南.pdf Maven实战.doc Maven实战.pdf Maven构建并管理...
maven项目构建入门书籍,java maven入门经典书籍
这是构建基于Maven的SSH原型项目视频文件,初学者可以进行参考
ssm框架结合maven整合web项目源码,
Maven2构建.doc Maven2构建.doc Maven2构建.doc
NULL 博文链接:https://jicu7766240.iteye.com/blog/2354167
《Maven2使用项目开发规范说明》,图文并茂,详细介绍了使用 Maven2 开发一个规范项目的流程。 目录: 1. 环境配置 3 1.1. 配置Maven2 3 1.2. 配置Eclipse环境变量MIA_LIB 4 1.3. 安装Maven2 的eclipse plugin 4 2. ...
Maven是一套标准的项目构建和管理工具,使用统一规范的脚本进行项目构建,简单易用,摒弃了Ant中繁琐的构建元素,并具有较高的可重用性。读完本文,您将了解Maven的基本概念和使用它进行项目构建的基本方法。本文将...
使用maven构建,打包的java项目demo
使用Maven构建和测试Java项目 Maven外部依赖 Maven项目文档 Maven项目模板 Maven快照 Maven构建自动化 Maven依赖管理 Maven自动化部署 Maven Web应用 Eclispe IDE集成Maven NetBeans IDE集成Maven Eclipse构建Maven...
通过maven构建分层次项目的详细步骤,通过该文档,能够了解创建模板过程
maven构建多模块项目,参考:http://blog.csdn.net/xiejx618/article/details/19849035
Maven 构建 项目 文档 java MyEclipse导入Maven项目及注意的事项