三
使用maven管理web应用
(仅供内部使用)
版 本 号:
V0.1
保 密 等 级:
■秘密 □机密 □绝密
编 制:
杨光
审 核:
修订记录
日期
版本号
描述
作者
2011-12-14
0.1
初稿完成
杨光
第一章Maven环境搭建 2
1.1 物质准备: 2
1.2 Jdk的安装、配置及测试 2
1.3 Maven环境搭建及测试 3
1.4 M2e的搭建 5
第二章 项目
与构建 7
2.1 Maven管理项目的优点 7
2.2 Maven项目构建实现 7
2.3新建pom工程的子工程 8
2.4 Maven项目依赖添加 9
2.5 Maven打包运行 12
第三章 解决过程 13
第四章 解决结果 13
第五章 总结 13
关键词:
maven、gongan-common、图综平台
摘 要:
结合多位师兄使用配置maven的文档资料已经网络资源,在黄春华大哥的帮助下,我利用maven-eclipse成功的将图综平台2.0版划分成2个基础工具jar包、9个业务功能jar包和一个web应用war包。在整个拆分过程中,遇到了很多问题。任务刚刚结束,趁着热乎劲,我想把整个过程写下来,留给兄弟们特别是没有接触maven而又急于使用的兄弟们(因为一开始,我也没接触过)做个参考,希望对大家伙有一定的帮助。
第一章Maven环境搭建
1.1 物质准备:
Jdk5.0以上安装文件、eclipse、apache-maven-3.0.3-bin.zip、m2eclipse.zip
1.2 Jdk的安装、配置及测试
1 确认安装文件为5.0以上版本,因为maven采用的java环境是1.5,所以,提供jdk也必须在这个版本以上。
2 需要安装jdk,因为在jre环境下,maven,具体点就是m2e插件会出现很多专治程序员的尴尬bug。
3 Jdk的安装目录不要出现汉字和空格,否则后果一样令相关人士头痛。
结合以上要求开始安装:
双击安装文件一步一步直到安装完毕,注意要修改jdk以及jre的安装目录。
安装完毕后要进行环境变量设置。
鼠标放在“我的电脑”上右键点击“属性”,在弹出的窗口中选择“高级”栏目页,点击“环境变量”:
在系统变量栏里添加变量:
变量名:JAVA_HOME 变量值:C:\Java\jdk1.6.0_11
变量名:classpath 变量值:.;%JAVA_HOME%\lib
修改系统变量栏里的变量:
变量名:Path 变量值追加:;%JAVA_HOME%\bin
应用确定退出窗口,此时java的环境变量已经配置完毕。
Java安装配置测试:
运行“cmd”命令,输入java、java –version等命令,出现java的相关信息,说明jdk已经安装配置测试完毕。以上是针对初入java的童鞋们编写的文档。
1.3 Maven环境搭建及测试
从官网上下载apache-maven-3.0.3-bin.zip,将该压缩文件解压。(我将该压缩文件解压至F:\testMaven)
这个目录就是maven的安装目录。
配置maven:
打开环境变量配置窗口,如java环境配置。
Maven在环境中,行家们名其曰:M2,故在系统环境变量栏中添加:
变量名:M2_HOME 变量值:F:\testMaven\maven-3.0.3
然后修改环境变量Path:
变量名:Path 变量值追加:;%M2_HOME%\bin
应用确定退出窗口,此时maven的环境变量已经配置完毕。
运行“cmd”命令,输入mvn –version等命令,出现java的相关信息(如下图),说明maven已经配置测试完毕。
配置settings.xml文件。
介绍两点:
1.本地maven repository的路径配置;2.连网代理配置
本地路径配置:修改该配置,可以调整本地库位置。
D:/maven_repository/.m2/repository
连网配置:修改该配置,可使m2e在编译时遇到未下载的jar包时,能够连网下载
my-proxy
true
http
172.16.0.100
808
yangguang
yangguang
repository.mycom.com|*.google.com
1.4 M2e的搭建
将m2eclipse.zip和mylyn.zip拷贝到本机,并解压,将文件放入eclipse的相应的目录下,eclipse已有的文件不要覆盖。启动eclipse,并对其配置。
介绍以下几点:
1. 取消maven repository index update
2. 修改使用的maven环境
3. 选择maven的配置文件,settings.xml,确定本地库位置
4. 修改java环境
配置步骤:
打开eclipse—》window—》Perferences—》Maven,取消勾选Download repository index updates on startup
点开Maven下Insallation,在Select the installation used to launch maven列
中,点击add,选择环境maven的根目录,点击确定。
点开Maven下的User settings,选择setting.xml文件所在位置,打开看看配置是否正确,点击Update Settings。
由于eclipse的java编译环境大部分都是jre,maven编译打包需要jdk所以修改一下jre安装路径,让其指向jdk安装目录。Java—》Installed JREs,选中Installed JREs列表中的jre,并将其修改为指向jdk安装目录的jdk。
您还可以配置一下工作空间的其他配置信息,例如编码等其他环境。
到此,用于分解web工程的java、maven环境都已经搭建完成。
第二章 项目分析与构建
2.1 Maven管理项目的优点
Maven2 的基本原理很简单,采用远程仓库和本地仓库以及 pom(project object model).xml ,将 pom.xml 中定义的 jar 文件从远程仓库下载到本地仓库,各个应用使用同一个本地仓库的 jar ,同一个版本的 jar 只需下载一次,而且避免每个应用都去拷贝 jar 。同时它采用了现在流行的插件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,所以在执行 maven 任务时,才会自动下载需要的插件。这个特性也为客户系统的升级带来的很大的方便,客户每次升级的时候可以使用maven的远程部署功能自动下载最新的系统组件(jar),并重新打包部署,很大程度的减少的系统升级的工作量。
我们在项目中结合maven的进行开发的主要思路:
1.建立支持Maven2的开发框架,框架中结合了一些项目功能和工具类,并且此框架本身是一个eclipse工程,支持使用eclipse IDE的开发,并通过SVN可进行团队协作。
2.在Maven2的pom.xml中制定开发框架的依赖包,并建立依赖包的团队管理本地服务器,使团队中的包依赖得到统一管理。
3.每日下班后,在构建服务器上每日从SVN上下载各个团队开发人员的代码,统一进行集成构建和测试。由于是每日构建,所以发现的bug可及时反馈给开发人员进行修正,避免了一般开发过程中的bug长时间遗留的情况。
Maven项目构建规划
Maven工程一般分成五个层次进行分解j2ee工程,和web开发分层类似:
Utill:工具包,不包含任何业务逻辑,仅仅是对上层的算法处理作辅助
Entity:实体javaBean包,用于项目实体构建
Dao:数据库连接对象包(web的持久层),理论上不包含业务逻辑
Manager:业务逻辑包,该部分包括业务处理接口层、处理接口实现层和页面封装对象(vo层)
Web:包括页面(web的view层面)部分和请求接口(Controller,web的控制层面)部分
2.2 Maven项目构建实现
根据规划
对maven各层次包的用途理解,对原应用项目进行初步划分:
整理包与包之间的类依赖:调换不合理的依赖关系,防止双向依赖
整理包中类功能:按照上述要求整理包中的类,按照类的功能,将类放入合理的位置
新建一个maven的pom工程
该pom工程没有任何java代码,仅仅是有一个pom.xml。该maven工程主要是负责对分包后的各层工程进行引导协调,例如要对其中的所有工程进行打包,那么该pom工程会按照这些工程的依赖关系进行依次处理。可以说该pom工程是其他工程的父maven工程。为了理解这个概念,我引入一个小例子:某供电所对小李村进行供电,小李村并不用电,用电的是小李村里的各个家庭或企业,那么,供电所要对每个家庭进行停电操作,它仅仅对小李村发出停电指令,而不是对每个家庭进行停电。这里的村就是maven的pom工程,它不包含任何代码,maven要对整个项目进行操作时,仅仅操作该pom工程即可,该pom的子工程会全部依次进行处理。
4.0.0
com.kedacom.gongan
gongan-pvas
2.0.0
pom
pvas
2.3新建pom工程的子工程
右键刚才建的pom工程,添加子工程模块,如下图:
建完子项目后,您会发现在pom工程的pom.xml中出现:
gongan-util
每加一个子maven模块,就会在这里加一个module。而在子模块的pom.xml中也会有相应的描述:
gongan-pvas
com.kedacom.gongan
2.0.0
在maven的应用中一共包括
src/main/java
src/main/resources
src/test/java
src/test/resources
src
target
pom.xml
将该工程中的java代码放入src/main/java中,将配置文件放在resources中,将测试用的java和配置文件分别放入src/test/java 、src/test/resources 中。
2.4 Maven项目依赖添加
在一开始讲的maven环境中,包括一项本地库的构建。所谓的本地库,就是指maven依赖的jar控制库,在这里,maven会将jar放到不同的目录下。还是maven的老原则就是四点确定唯一:artifactId、groupId、version、packaging。当maven在这里找不到的时候就会自动到网上去下载。
如果你需要的jar是自己打的包,本地可以通过mvn命令进行上传至本地库,为maven提供依赖。运行命令:
mvn install:install-file -Dfile=*.jar -DgroupId=* -DartifactId=* -Dversion=* -Dpackaging=*
注意各参数前有空格,字符为半角。
为maven工程添加依赖是通过pom.xml来完成的,你可以直接将依赖的信息添加到pom.xml中的依赖集合中,如:
axis
axis
1.4
如果您对该jar包的信息了解有限,则用m2也可以添加,如图:
这时,它会根据您的要求在本地库搜索,如果本地库没有,它会自动根据网上中心库的索引进行搜索,如果确定合适的,它会自动将jar包下载到本地中心库,并添加到maven工程的依赖集合中。
所有的依赖查询包括两部分:本地库依赖和中心库索引在eclipse中也可以查看相应信息:
打开Maven repositories视图:
这里主要是Local Repository和central,这两个库是您搜索的主阵地,新空间里他俩是空的,需要rebuilt一下。
启动Maven服务的jetty容器
在刚分好的maven项目中可以包括一个或多个war包,那么如何启动并测试呢?用jetty!
在war模块的src/test/resources中添加jetty_env.xml文件,功能你懂的,
如下:
jdbc/gongan
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@172.16.251.180:1521:ORCL
pvas21
123456
然后在war的pom中注册该插件:
org.mortbay.jetty
maven-jetty-plugin
10 src/test/resources/jetty_env.xml
用maven配置服务的字符集:
org.apache.maven.plugins
maven-compiler-plugin
2.3.2
1.6
UTF-8
2.5 Maven打包运行
Maven的命令很多,但能用的也就那几个,其中最常用的是clean 和install。
一个事清除,清除掉target目录及以下目录和文件,也就是把install的产物给完全清理掉,而install则与其相反,在打包过程中会有很多奇怪的千年老bug,专整初学者。如果你遇到相同的问题,咱们私下研究(因为问题五花八门)。
Maven项目运行
利用jetty插件作为服务容器,那么也要使用jetty进行启动:jetty:run ,记得不要少了中间的冒号。
第三章 解决过程
搭建环境准备——》分析分层——》处理依赖并运行测试
第四章 解决结果
尝试就有解决问题的机会
第五章 总结
在实际的Web应用中,使用maven进行版本控制,方便打包和依赖控制,无需编写复杂的ant命令。