分类: Java
2012-05-21 13:33:26
场景说明
一、现在的项目中对于各种jar包的依赖关系都是使用手工的方式进行,非常麻烦,项目组之间相同的环境变量可能会取不同的变量名,为项目的维护照成一些困扰。
二、MyEclipse打包war的时候会把所有的依赖关系都打包到文件中,最后生成的.war文件一般都在20M~30M左右,远程部署的时候,特别是网速不给力的情况下很折磨人。
操作
前置工作
1、JDK (略)
2、MyEclipse(略)
3、Maven(略)
开始操作
1、新建Web项目。
2、增加Maven支持,"finish"
3、打开pom.xml,因为是web项目,所以系统自动添加了J2EE的依赖关系。
4、笔者建议将自带的J2EE依赖全部删除,然后新增依赖geronimo-servlet_2.5_spec,scope选择provided,这样J2EE的包就只在编译阶段起作用,运行、打包的时候就不会加载相关的jar。
5、增加其他项目需要的依赖
,其中oracle的依赖在添加的时候会报错,因为Repository中更新第三方的jar包不一定是及时的,所以将ojdbc14.jar install到本地仓库,方法如下
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=1.0 -Dpackaging=jar -Dfile=ojdbc14.jar
-Dversion是jar的版本,因为项目只用到这个版本的jar,不会变化,所以我就设置版本为1.0,也可以设置成其他。
-Dfile=ojdbc14.jar 是ojdbc14.jar 的路径,默认是在C:\Documents and Settings\${用户}目录下,也可以指定具体的路径,譬如-Dfile=E:\ojdbc14.jar
为了给war包瘦身,我们假定所有的依赖库在tomcat的lib下都存在,所以我们将新添加的这些包都设置成provided,当然,junit是测试用的,他的范围是test。
6、将Maven的settings.xml中的servers节点中增加tomcat的配置
然后在项目的pom.xml增加tomcat的支持插件,
configuration节点中的url是该tomcat服务器的管理页面,直接到manager就可以了,不要加/html,可能会无法调用。
server节点就是Maven的settings.xml中的服务器的id。
7、部署到tomcat中。
首先确认tomcat是运行中的状态
然后右键项目,Run As选择 Maven build,
然后再Goals填写命令package tomcat:redeploy,run,就成功了。
备注
1、新建web项目的时候,myeclipse会自动添加J2EE的依赖关系保证项目可以正常编译,笔者在不删除这些关系的情况下继续操作项目,最后诡异的事情发生了,所有的jar包,不论是不是scope是不是provided都被打包到war文件夹中,不但体积很大,还和${TOMCAT_HOME}\lib中的包冲突,找了好久都没找到原因
2、可以在Maven的settings.xml中配置多个服务器,这样打包运行的时候可以直接发送到目标环境,比较方便。