普通web项目转为maven项目整理

Posted wodediqizhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了普通web项目转为maven项目整理相关的知识,希望对你有一定的参考价值。

     现在越来越多的公司和团队开始使用maven来管理项目。对个人而言,之前一直不太喜欢maven结构的项目,需要配置pom.xml,每次打开IDE之后都需要加载maven,电脑配置低的话就卡半天,balabala。后来用得多了也就习惯了,就跟用Myeclipse用习惯了,再用IDEA时一样,估计是大多数人的通病,习惯于一个模式,没有外力就不想再更换(还不是因为懒,哈哈)。

     好了,言归正传,之前的时候接到个任务,需要把一个普通的web项目改成maven的,花了点时间就研究了研究。

1.maven结构

     maven结构的web项目目录如下:


根据maven项目“约定优于配置”的原则,其中./src/main/用于存放源代码,./src/test用于存放单元测试代码,./target用于存放编译、打包后的输出文件。按理说src/main/作为Source Folder就可以了,不过为了方便开发,通常会在main下面加上java和resources两个目录,其中java放置java代码,而resources文件夹存放相关配置文件)。

2.maven的配置都在pom.xml里面

2.1.pom.xml在改的时候我主要用到三个配置<dependencies>、<profiles>、<build>。

2.1.1.<dependencies>是项目引入插件所需要的额外依赖,主要是依赖的jar包。
<dependency>
			<!-- 项目或者组织的唯一标志,并且配置时生成路径也是由此生成 -->
			<groupId>junit</groupId>
			<!-- 项目的通用名称 -->
			<artifactId>junit</artifactId>
			<!-- 项目的版本 -->
			<version>4.11</version>
			<!-- 表示开发的时候引入,发布的时候不会加载此包,其他的还有compile(缺省值)、provided、runtime、system -->
			<scope>test</scope>
		</dependency>


2.1.2.因为改造前的项目的jar好多是框架私有包,在maven仓库没有,这时就需要将jar包install到本地maven仓库,
mvn install:intall-file -Dfile=myprivatejar.jar -DgroupId=com.cn.wddqz -DartifactId=non-maven-proj -Dversion=1 -Dpackaging=jar


2.1.3.dependency的version里还可以用$junit.version表示,然后再<properties>中加入<junit.version>4.11</junit.version>

2.2.profiles:在列的项目构建profile,用来激活不同的profile

因为项目有多个测试环境,所以根据不同的环境要有若干套配置文件,次时就需要多个profile,用来放置不同的配置文件。此时maven结构中的resouces就需
要有若干个文件夹了ceshi1_resouces、ceshi2_resouces、ceshi3_resouces等.
配置文件如下:
               <profile>
			<id>ceshi1</id>
			<properties>
				<package.environment>ceshi1_resouces</package.environment>
			</properties>
			<activation>
				<activeByDefault>true</activeByDefault> <!-- 设置默认打包那个环境下的配置文件 -->
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-war-plugin</artifactId>
						<version>2.4</version>
						<configuration>
							<!-- 包含空文件夹,指的是maven编译打包的时候会将空文件夹也编译打包进去,该参数2.4版本后才能使用 -->
							<includeEmptyDirectories>true</includeEmptyDirectories>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>


注:进行maven编译的时候需要加上" -P ceshi1 "

2.3.build构建项目需要的配置信息:

示例如下:
<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<!-- maven-compiler-plugin用来指定JDK版本和编码 -->
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<!-- 编译器的版本设定为1.6,应该指的是jdk,默认是用的1.3,版本太老 -->
					<source>1.6</source><!-- 源代码使用的开发版本 -->
					<target>1.6</target><!-- 需要生成的目标class文件的编译版本 -->
					 <!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中需要没有使用低版本jdk中不支持的语法),会存在target不同于source的情况 -->
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<plugin>
				<!-- maven-war-plugin进行打包 -->
				<artifactId>maven-war-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<includeEmptyDirectories>true</includeEmptyDirectories>
					<!-- war包的名字 -->
					<warName>MavenDemo</warName>
					<webResources>
						<resource>
							<!-- package.environment就是profile中的配置文件路径 -->
							<directory>$project.basedir/src/main/$package.environment</directory>
							<targetPath>WEB-INF/classes</targetPath>
							<filtering>true</filtering>
						</resource>
					</webResources>
				</configuration>
			</plugin>
		</plugins>
	</build>

3.注意事项:

3.1.maven项目改造前,IDE里面需要装maven插件,本地配置maven的环境变量。
3.2.我是先新建了个maven的web项目,然后将原来web项目的源码拷贝到对应目录的方式实现的。

4.后记:

改造的时候只用到了以上的一些内容,基本上完成了任务,基于个人能力可能有些方面没考虑到,或者项目比较简单,而没有用到更复杂的知识,如果大家
有更好的案例,欢迎补充。


加个Apache Maven 入门:
Apache Maven 入门篇 ( 上 )
Apache Maven 入门篇 ( 下 )

以上是关于普通web项目转为maven项目整理的主要内容,如果未能解决你的问题,请参考以下文章

(转)使用IDEA将普通MAVEN项目转为WEB项目

web项目转为maven项目

如何将Maven项目转为Java Web项目

怎么把Maven项目转为动态Web项目?

IntelliJ IDEA 普通java工程怎么转为maven工程

myeclipse 项目,怎么转成maven项目