Java Web工程转换为基于Maven的Web工程

转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50569603

1. 背景

最近接到通知,阿里集团统一要求把历史项目迁移到阿里生产环境中来,而咱手头这个项目是2012年的老项目,

普通Java web工程,不能部署进生产环境,得把这个工程转为maven工程。本篇文章记录了Java web工程转

为maven工程的整个纪录。

2. 前期准备工作

2.1. 创建maven web工程

首先创建maven project项目,点击next按钮 
这里写图片描述

然后勾选上Create a simple project (skip archetype selection)—不使用原型骨架。点击next按钮 
这里写图片描述

Packaging方式选择war,点击finish按钮 
这里写图片描述

由于打包方式为war,所以main目录下多了一个webapp目录 
这里写图片描述

由于我们的项目要使用eclipse发布到tomcat下面,这里我们需要先把项目转成dynamic web project

在我们的项目上点击右键,选择properties 并找到 Project Facets ,并点击Convert to faceted form… ,

然后勾选Dynamic Web Module 如下图: 
这里写图片描述

结果提示jdk要求java 1.6以上,回头看看maven项目的jdk版本是1.5的,如下图: 
这里写图片描述

我们将其改为1.6,点击OK,同时将JRE library改为1.7,如下图: 
这里写图片描述 
这里写图片描述

同时把图中的java 1.4改为1.7,勾选Dynamic Web Module,点击OK按钮 
这里写图片描述

来看下目前的项目结构,发现多了一个WebContent目录,但这不符合maven项目结构,因此还需要调整。 
这里写图片描述

把WebContent中的两个目录WEB-INF和MATE-INF拷贝进web app目录里面,然后删除WebContent目录 
这里写图片描述

那么现在的目录结构为 
这里写图片描述

然后我们要修改发布规则,右键点击项目, 选择 Deployment Assembly 
这里写图片描述

选择WebContent,把它remove掉,测试类我们也不需要发布,test的两个目录页可以remove 
这里写图片描述

接着重新指定一个web的路径,点击add 
这里写图片描述

选择Folder –> next 
这里写图片描述

在src下找到webapp目录,然后finish 
这里写图片描述

最后一步,我们要把当前的build path 指向 Maven Dependency, 直接点击add,选择Java Build Path Entries 

然后next 
这里写图片描述

然后再点击finish完成 
这里写图片描述

点击OK,结束。到目前为止,一个maven web项目搭建完成 
这里写图片描述

2.2. Java Web工程相应文件夹拷贝至maven工程相应文件夹

首先来看看java web工程的结构 
这里写图片描述

2.2.1. 拷贝java文件

把java web工程 Java Resources目录下的src目录下的java文件都拷贝到maven工程中的Java Resources

目录src/main/java目录下面 
这里写图片描述

2.2.2. 拷贝配置文件

把java web工程 Java Resources目录下的conf目录下的xml配置文件都拷贝到maven工程中的Java Resources

目录src/main/resources目录下面 
这里写图片描述

2.2.3. 拷贝web文件

把java web工程 Web Root目录下所有文件文件如下: 
这里写图片描述 
把java web工程 Web Root目录下所有文件文件都拷贝到maven工程中的webapp目录下面 
这里写图片描述

到目前为止,java web项目转Maven项目的文件迁移工作全部完成,接下来要做的是个细活,体力活,把java web项目

所有引用jar包,都加入到maven pom依赖中来。

3. 添加POM依赖

首先需要去java web项目中查看都引用了哪些jar包,去java web工程 Java Resources目录下的Libraries查看: 
这里写图片描述

上面只是截取了部分,其实很多,有七八十个jar包,这一个个查都得半天。不过除了一个一个查,也没有其他办法了。

这里我就介绍下如何查maven依赖,比如我要查commons-io-2.4.jar对应的maven 依赖 
这里写图片描述

首先登录maven repository官网http://mvnrepository.com,搜索这个包,如下: 
这里写图片描述

看见结果中有2.4这个版本,点击进去,copy红框中的结果,将其粘贴进pom,其他剩下的就是这样一个一个查,一个一个添加。 
这里写图片描述

过程中可能会碰到这种情况,在maven官网查不到你需要的那个jar包,这个时候,你需要把这个jar包加入到你的本地库,

或者以后生产环境中的线上库。

如何加入本地库,进入你需要添加的jar包所在文件路径,然后指定group id和artifactId,如下:

localhost:~ xiaolong$ mvn install:install-file -DgroupId=com.ibatis -DartifactId=ibatis -Dversion=1.0 -Dpackaging=jar -Dfile=ibatis.jar -DgeneratePom=true
 
 
  • 1
  • 1

其中-Dfile填写源jar包所在路径,执行上述命令会自动把jar包添加至你本地的maven仓库。

4. 过程中碰到的问题

在运行maven工程时会碰到不少问题,大都是maven依赖的引用问题:jar包引用错误。

可以通过下面命令来检查:

mvn clean install
 
 
  • 1
  • 1

下面是我排除错误后,检查成功的结果:

localhost:BUGManager_maven dddd$ mvn clean install
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building BUGManager_maven 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ BUGManager_maven ---
[INFO] Deleting /Users/xiaolong/Documents/workspace/BUGManager_maven/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ BUGManager_maven ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 7 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ BUGManager_maven ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 115 source files to /Users/xiaolong/Documents/workspace/BUGManager_maven/target/classes
[WARNING] /Users/xiaolong/Documents/workspace/BUGManager_maven/src/main/java/com/autonavi/bugmanager/controller/poi/PoiController.java:[52,27] sun.print.resources.serviceui是内部专用 API, 可能会在未来发行版中删除
[WARNING] /Users/xiaolong/Documents/workspace/BUGManager_maven/src/main/java/com/autonavi/bugmanager/controller/poi/PoiController.java:[53,29] sun.security.provider.MD5是内部专用 API, 可能会在未来发行版中删除
[WARNING] /Users/xiaolong/Documents/workspace/BUGManager_maven/src/main/java/com/autonavi/bugmanager/controller/poi/PoiController.java:[83,55] com.sun.org.apache.xerces.internal.impl.dv.util.Base64是内部专用 API, 可能会在未来发行版中删除
[WARNING] /Users/xiaolong/Documents/workspace/BUGManager_maven/src/main/java/com/autonavi/bugmanager/controller/road/RoadController.java:[70,55] com.sun.org.apache.xerces.internal.impl.dv.util.Base64是内部专用 API, 可能会在未来发行版中删除
[WARNING] /Users/xiaolong/Documents/workspace/BUGManager_maven/src/main/java/test/myTest.java:[13,29] sun.security.provider.MD5是内部专用 API, 可能会在未来发行版中删除
[WARNING] /Users/xiaolong/Documents/workspace/BUGManager_maven/src/main/java/com/autonavi/bugmanager/controller/bus/BusController.java:[55,55] com.sun.org.apache.xerces.internal.impl.dv.util.Base64是内部专用 API, 可能会在未来发行版中删除
[WARNING] /Users/xiaolong/Documents/workspace/BUGManager_maven/src/main/java/com/autonavi/bugmanager/controller/poi/PoiController.java:[1748,68] com.sun.org.apache.xerces.internal.impl.dv.util.Base64是内部专用 API, 可能会在未来发行版中删除
[WARNING] /Users/xiaolong/Documents/workspace/BUGManager_maven/src/main/java/com/autonavi/bugmanager/controller/road/RoadController.java:[3582,68] com.sun.org.apache.xerces.internal.impl.dv.util.Base64是内部专用 API, 可能会在未来发行版中删除
[WARNING] /Users/xiaolong/Documents/workspace/BUGManager_maven/src/main/java/com/autonavi/bugmanager/controller/bus/BusController.java:[597,68] com.sun.org.apache.xerces.internal.impl.dv.util.Base64是内部专用 API, 可能会在未来发行版中删除
[WARNING] /Users/xiaolong/Documents/workspace/BUGManager_maven/src/main/java/com/autonavi/bugmanager/service/common/PageService.java: 某些输入文件使用了未经检查或不安全的操作。
[WARNING] /Users/xiaolong/Documents/workspace/BUGManager_maven/src/main/java/com/autonavi/bugmanager/service/common/PageService.java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ BUGManager_maven ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ BUGManager_maven ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ BUGManager_maven ---
[INFO]
[INFO] --- maven-war-plugin:2.2:war (default-war) @ BUGManager_maven ---
[INFO] Packaging webapp
[INFO] Assembling webapp [BUGManager_maven] in [/Users/xiaolong/Documents/workspace/BUGManager_maven/target/BUGManager_maven-0.0.1-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [/Users/xiaolong/Documents/workspace/BUGManager_maven/src/main/webapp]
[INFO] Webapp assembled in [945 msecs]
[INFO] Building war: /Users/xiaolong/Documents/workspace/BUGManager_maven/target/BUGManager_maven-0.0.1-SNAPSHOT.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO]
[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$
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

出现错误后,查找正确的jar包,即可。

4. maven web运行方式

下面介绍我使用的运行方式:jetty运行。

首先在POM中添加jetty插件:

<build>
        <plugins>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.26</version>
                <configuration>
                    <webAppSourceDirectory>${basedir}/src/main/webapp</webAppSourceDirectory>
                </configuration>
            </plugin>                       
        </plugins>
    </build>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在工程上,单击鼠标右键,点击Rus As—>Maven Build… ,并在Goals中输入命令:jetty:run 
这里写图片描述

点击RUN,可以成功启动maven web项目。

之前写的一篇文章《 Maven Web工程运行异常:Maven.multiModuleProjectDirectory system propery is not set的问题》

介绍了jetty运行中可能碰到的问题,供参考。

到目前为止,Java Web项目转Maven工程大功告成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值