note:maven 简介
1.为什么要使用Maven,使用Maven有什么好处
maven是一个可以帮助你进行项目编译、文档管 理、报告管理、包依赖管理、SCMs管理、发布等的工具.
maven是一个可以帮助你进行项目编译、文档管 理、报告管理、包依赖管理、SCMs管理、发布等的工具.
它可以协助你完成以下工作:
1.快速创建一个工程文件
2.几乎不用做任何设置, 可以立即进行编译、测试、打包等工作。以前用Ant的时候,也可以很方便的做这些工作,但是写Ant的build.xml文件是一件很烦琐的事情。
3. 创建项目文档非常容易,可以自动生成一个web site,记录你的项目情况、版本信息、两个版本之间的change list等。
4.非常方便 的远程发布、scm(cvs)管理功能。
5.依赖管理功能。
1.快速创建一个工程文件
2.几乎不用做任何设置, 可以立即进行编译、测试、打包等工作。以前用Ant的时候,也可以很方便的做这些工作,但是写Ant的build.xml文件是一件很烦琐的事情。
3. 创建项目文档非常容易,可以自动生成一个web site,记录你的项目情况、版本信息、两个版本之间的change list等。
4.非常方便 的远程发布、scm(cvs)管理功能。
5.依赖管理功能。
2 有maven前后对比
有maven之前
我们在做多个不同的Java项目时,每个项目所用到的库 文件基本都是大同小异的,通常的做法是每个项目下面都会复制一份这些库文件,甚至会把这些库文件都提交到cvs上去,这样带来的问题不仅是增大了项目占用 的硬盘空间,而且也使包管理很混乱,当我需要在另外的机器上进行工作时,我通常需要重新建立我的工程文件。
搭建项目的过程,不仅容易出错,而且很耗时.
有了maven
项目所有的依赖的都在项目根目录的pom.xml文件中声明,maven会替你管理. 编译,测试,打包,发布,生成文档,都只需要一句命令.
一个标准的maven web项目的目录结构
![](https://images.cnblogs.com/cnblogs_com/HelloCoding/201201/201201191653295945.png)
src目录是开发目录
target目录是存放编译生成结果的
src/main目录下是项目运行所需所有代码
src/test目录下是存放测试代码的,项目发布时,不包括.
src/main/java/目录存放所有java代码
src/main/resources/目录存放各种配置文件,资源文件
src/main/webapp/目录存放web目录所有内容
3.maven重要概念以及工作原理
a.生命周期
一个项目从创建到发布的过程,maven将各个阶段要做的事都提炼出来.
下面是默认生命周期的各个主要阶段:
validate:验证项目是否正确,所有必需的信息是否可用。
compile:编译项目中的代码。
test:用相关的单元测试框架测试编译后的代码,这些运行的测试并不会随项目打包和布署。
package:将编译后的代码打包成相应的格式文件,如jar包。
integration-test: 如果需要在一个综合环境中运行我们的测试,这个阶段将会运行和布署项目到该环境中。
verify: 检查项目的包是否正确和符合要求。
install:将包安装到本地maven仓库,可以让其他项目作为依赖使用该包。
deploy:将包发布到远程的maven仓库,并提供给其他开发者使用。
site:pre-site,site,post-site,site-deploy 生成文档
clean:pre-clean,clean,post-clean 清理target目录
default生命周期的各个阶段将会按顺序执行来完成这个生命周期。
validate:验证项目是否正确,所有必需的信息是否可用。
compile:编译项目中的代码。
test:用相关的单元测试框架测试编译后的代码,这些运行的测试并不会随项目打包和布署。
package:将编译后的代码打包成相应的格式文件,如jar包。
integration-test: 如果需要在一个综合环境中运行我们的测试,这个阶段将会运行和布署项目到该环境中。
verify: 检查项目的包是否正确和符合要求。
install:将包安装到本地maven仓库,可以让其他项目作为依赖使用该包。
deploy:将包发布到远程的maven仓库,并提供给其他开发者使用。
site:pre-site,site,post-site,site-deploy 生成文档
clean:pre-clean,clean,post-clean 清理target目录
default生命周期的各个阶段将会按顺序执行来完成这个生命周期。
例如你直接敲 mvn package mvn会 validate ,compile,test,package 依次执行一遍.见下图
![](https://www.cnblogs.com/HelloCoding/admin/9788a704-4602-4c43-abed-46cf97747146_files/print.bmp)
b.插件
maven是由一堆插件构成的,每个插件可以有不止一个goal(目标),但有一个默认目标
参考上图 你敲 mvn package 在它调用的是war插件的war目标.
我们最常用的 maven命令 mvn tomcat:run (调用tomcat插件的run目标)
c.仓库
第一次运行控制台运行maven命令,会在系统的用户目录下新建一个.m2文件夹
![](https://images.cnblogs.com/cnblogs_com/HelloCoding/201201/20120119165351220.png)
.m2文件夹下是repository文件夹,这个文件夹就是本地仓库.
一个maven项目在编译时会首先从本地仓库找,看有没有需要的jar包,
如果没有会从几个远程仓库下,所以刚装maven会一直提示在下东西.
只要将一个有很多包的本地仓库目录替换掉这个目录,maven就不会重新下了.
d.pom.xml文件
pom.xml文件描述项目的所有信息,项目属于哪个组织,项目名称,版本,依赖哪些jar包,使用哪些插件
关于pom.xml文件的编写参见 howto:pom文件编写.