博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导):Java Web工程转换为基于Maven的Web工程

1,首先浏览java web工程的结构如下:

怎么把一个项目转换成maven项目 java项目转换成maven_maven


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中配置多源目录,多资源目录,以及读取源目录资源文件等。

怎么把一个项目转换成maven项目 java项目转换成maven_maven_02


3,拷贝配置文件

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

Ps:

1,配置文件包括所有非.java的文件,包括.xml , .properties等

2,工程所有配置文件,即使不在conf目录(只是当前项目的配置全放在了conf,其他项目不一定,要求全部的配置文件,包括src源目录里面包含的配置文件)

3,注意资源文件原本所在的包路径,要保持不变。

怎么把一个项目转换成maven项目 java项目转换成maven_maven_03


4,拷贝web文件(所有的webapp或者webcontent里面的文件)

把java web工程 Web Root目录下所有文件文件如下:

怎么把一个项目转换成maven项目 java项目转换成maven_jar_04


把java web工程 Web Root目录下所有文件文件都拷贝到maven工程中的webapp目录下面

怎么把一个项目转换成maven项目 java项目转换成maven_java_05

到目前为止,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目录中去。

怎么把一个项目转换成maven项目 java项目转换成maven_java_06


上面只是截取了部分,其实很多,有七八十个jar包,这一个个查都得半天。不过除了一个一个查,也没有其他办法了。这里介绍下如何查maven依赖,比如我要查commons-io-2.4.jar对应的maven 依赖

怎么把一个项目转换成maven项目 java项目转换成maven_java_07


首先登录maven repository官网http://mvnrepository.com,搜索这个包,如下:

怎么把一个项目转换成maven项目 java项目转换成maven_java_08


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

怎么把一个项目转换成maven项目 java项目转换成maven_jar_09

过程中可能会碰到这种情况,在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插件

<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>

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

怎么把一个项目转换成maven项目 java项目转换成maven_怎么把一个项目转换成maven项目_10


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

一些在转换过程中需要处理的问题:
问题1:引用外部jar的方式,这里是放到了webapp/WEB-INF/lib中

<dependency>  
        <groupId>dwr</groupId>  
        <artifactId>dwr</artifactId>  
        <version>2.0.6</version>  
        <scope>system</scope>  
        <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/dwr.jar</systemPath>  
    </dependency>

问题2:jar引用冲突
1,同一个pom文件中对同一个jar的引用只能有一个,不能同时引用多个版本的该jar。
2,暂时没用,并且发布后会跟tomcat容器中的jar冲突,那么找到那个jar依赖引用了这些jar,用exclusions排除掉就行了,如:

<dependency>
		    <groupId>org.jasig.cas</groupId>
		    <artifactId>cas-server-support-jdbc</artifactId>
		    <version>3.5.2</version>
		    <scope>runtime</scope>
		   	<exclusions>
		      <exclusion>
		      	  <groupId>org.apache.santuario</groupId>
   				 <artifactId>xmlsec</artifactId>
		      </exclusion>
		    </exclusions>
		</dependency>

3,在项目测试编译阶段需要用一些jar,但是发布后会导致跟tomcat容器里的jar冲突,所以设置使用范围,如:

<dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>javax.servlet-api</artifactId>
		    <version>4.0.0</version>
		    <scope>provided</scope>
		</dependency>
		<dependency>
		    <groupId>javax.servlet.jsp</groupId>
		    <artifactId>jsp-api</artifactId>
		    <version>2.2</version>
		    <scope>provided</scope>
		</dependency>

问题3:当对maven项目update project 后,发现JDK还是默认的1.5这样的
解决方法是在pom.xml文件中设定maven项目的JDK版本,这样就不会有问题了

<plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <source>1.7</source>
        <target>1.7</target>
         <encoding>UTF-8</encoding>  
         <compilerArguments>  
             <verbose />  
             <bootclasspath>${java.home}\lib\rt.jar;${java.home}\lib\jce.jar</bootclasspath>  
         </compilerArguments>  
      </configuration>
    </plugin>