博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导):Java Web工程转换为基于Maven的Web工程
1,首先浏览java web工程的结构如下:
2,开始转移文件,先 拷贝java文件
把java web工程 Java Resources目录下的src目录下的java文件都拷贝到maven工程中的Java Resources目录src/main/java目录下面 (这里最好仅仅拷贝的是java文件,但是资源文件也是可以放到这里的)
Ps:
1,如果java web项目 源目录分多个,在maven里面最好用一个src/main/java,把同包的java文件放在一起,保证类的package包路径不变。
2,当然也可以在maven web中配置多源目录,多资源目录,以及读取源目录资源文件等。
3,拷贝配置文件
把java web工程 Java Resources目录下的conf目录下的xml配置文件都拷贝到maven工程中的Java Resources目录src/main/resources目录下面
Ps:
1,配置文件包括所有非.java的文件,包括.xml , .properties等
2,工程所有配置文件,即使不在conf目录(只是当前项目的配置全放在了conf,其他项目不一定,要求全部的配置文件,包括src源目录里面包含的配置文件)
3,注意资源文件原本所在的包路径,要保持不变。
4,拷贝web文件(所有的webapp或者webcontent里面的文件)
把java web工程 Web Root目录下所有文件文件如下:
把java web工程 Web Root目录下所有文件文件都拷贝到maven工程中的webapp目录下面
到目前为止,java web项目转Maven项目的文件迁移工作全部完成,接下来要做的是个细活,体力活,把java web项目所有引用jar包,都加入到maven pom依赖中来。
5,添加POM依赖
首先需要去java web项目中查看都引用了哪些jar包,去java web工程 Java Resources目录下的Libraries查看:
Ps:
1,这里引用的jar如果在maven搜索库中找不到,或者jar属于自己封装的,那么就作为外部jar引入到pom文件中去,把所有的jar放在webapp/WEB-INF/lib目录中去。
上面只是截取了部分,其实很多,有七八十个jar包,这一个个查都得半天。不过除了一个一个查,也没有其他办法了。
这里介绍下如何查maven依赖,比如我要查commons-io-2.4.jar对应的maven 依赖
首先登录maven repository官网http://mvnrepository.com,搜索这个包,如下:
看见结果中有2.4这个版本,点击进去,copy红框中的结果,将其粘贴进pom,其他剩下的就是这样一个一个查,一个一个添加。
过程中可能会碰到这种情况,在maven官网查不到你需要的那个jar包,这个时候,你需要把这个jar包加入到你的本地库,或者以后生产环境中的线上库。
如何加入本地库,进入你需要添加的jar包所在文件路径,然后指定group id和artifactId,如下:
mvn install:install-file -DgroupId=com.ibatis -DartifactId=ibatis -Dversion=1.0 -Dpackaging=jar -Dfile=E:/ibatis.jar -DgeneratePom=true
6,maven命令检查maven依赖以及项目是否有问题
mvn clean install
检查成功的结果:
[INFO] --- maven-install-plugin:2.4:install (default-install) @ BUGManager_maven ---
[INFO] Installing /Users/xiaolong/Documents/workspace/BUGManager_maven/target/BUGManager_maven-0.0.1-SNAPSHOT.war to /Users/xiaolong/Documents/repository/m2/repository/com/autonavi/rus/BUGManager_maven/0.0.1-SNAPSHOT/BUGManager_maven-0.0.1-SNAPSHOT.war
[INFO] Installing /Users/xiaolong/Documents/workspace/BUGManager_maven/pom.xml to /Users/xiaolong/Documents/repository/m2/repository/com/autonavi/rus/BUGManager_maven/0.0.1-SNAPSHOT/BUGManager_maven-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.861 s
[INFO] Finished at: 2016-01-23T16:01:10+08:00
[INFO] Final Memory: 34M/285M
[INFO] ------------------------------------------------------------------------
localhost:BUGManager_maven dddd$
出现错误后,查找正确的jar包,即可。
7,maven web的启动方式
1,tomcat:run
2,tomcat server服务添加
3,jetty运行
介绍jetty运行方式:首先在POM中添加jetty插件
org.mortbay.jetty
maven-jetty-plugin
6.1.26
${basedir}/src/main/webapp
在工程上,单击鼠标右键,点击Rus As—>Maven Build… ,并在Goals中输入命令:jetty:run
点击RUN,可以成功启动maven web项目。
一些在转换过程中需要处理的问题:
问题1:引用外部jar的方式,这里是放到了webapp/WEB-INF/lib中
dwr
dwr
2.0.6
system
${project.basedir}/src/main/webapp/WEB-INF/lib/dwr.jar
问题2:jar引用冲突
1,同一个pom文件中对同一个jar的引用只能有一个,不能同时引用多个版本的该jar。
2,暂时没用,并且发布后会跟tomcat容器中的jar冲突,那么找到那个jar依赖引用了这些jar,用exclusions排除掉就行了,如:
org.jasig.cas
cas-server-support-jdbc
3.5.2
runtime
org.apache.santuario
xmlsec
3,在项目测试编译阶段需要用一些jar,但是发布后会导致跟tomcat容器里的jar冲突,所以设置使用范围,如:
javax.servlet
javax.servlet-api
4.0.0
provided
javax.servlet.jsp
jsp-api
2.2
provided
问题3:当对maven项目update project 后,发现JDK还是默认的1.5这样的
解决方法是在pom.xml文件中设定maven项目的JDK版本,这样就不会有问题了
org.apache.maven.plugins
maven-compiler-plugin
1.7
UTF-8
${java.home}\lib\rt.jar;${java.home}\lib\jce.jar