目录
1 简介
Maven是基于Java平台的项目管理工具,它服务于项目构建、依赖管理和项目信息管理。并为全世界的Java开发者提供一个免费的中央仓库。
1.1 项目构建
Maven的用途之一就是服务于项目构建,帮助我们自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。我们也不需要一遍又一遍地输入命令,一次又一次地点击鼠标,我们要做的是使用Maven配置好项目,然后输入简单的命令(如mvn clean install),Maven就会帮我们处理那些繁琐的任务。最大化地消除构建的重复。
1.2 依赖管理
如今,几乎每个Java项目都会借用一些第三方的开源类库,这些类库都可以通过依赖的方式引入到项目中来。随着依赖的增多,版本不一致,版本冲突、依赖臃肿等问题接踵而来。手工解决这些问题十分繁琐,出错的概率加大,幸运的是Maven提供了一个解决方案,它通过坐标系统准确地定位每个构件,也就是我们通过一组坐标就能够找到一个Java类库。我们可以借助这个特性来有序地管理依赖,轻松地解决那些繁琐的依赖问题。
1.3 项目信息管理
Maven还帮助我们管理原本分散在项目中各个角落的项目信息,包括项目描述、开发者列表、版本控制系统地址、许可证、缺陷系统地址等。这样Maven在不知不觉中帮我们节省了大量寻找这些信息的时间。
1.4 中央仓库
Maven为全世界Java开发者提供了一个免费的中央仓库,在里面可以找到任何流行的开源类库。只要定位了坐标,Maven就能够帮我们自动下载,省去手工劳动。
2 目标
- 使构建过程更容易
- 提供统一构建系统
- 提供高质量的项目信息
- 提供开发的最佳实践指南
- 能无缝的加入新的特性
3 错误理解
- Maven是一个站点和文档制作工具
- Maven扩展了Ant,使其能下载到各种依赖包
- Maven是一系列可重用的Ant脚本
4 特点
4.1 统一项目的目录结构
这是“约定优于配置”精神的体现,可以保证所有项目的目录结构都是一样的。目录结构统一的好处就是,你要找源代码就去src/main/java/下。你要找需要放到classpath下 的资源,就去src/main/resources/下。你要找单元测试对应的代码和资源,就去src/test/下。每个目录起什么作用都很清楚明了,不会出现打开项目找不到要找的文件的情况。
4.2 统一软件构建阶段
Maven2把软件开发的过程划分成了几个经典阶段,比如你先要生成一些java代码,再把这些代码复制到特定位置,然后编译代码,复制需要放到 classpath下的资源,再进行单元测试,单元测试都通过了才能进行打包,发布。
4.3 依赖库的管理
这应该是它最大的优点了。只要用了Maven就不用再为每个项目复制spring.jar和hibernate.jar了,Maven会在你需要的时候,自动通过坐标系统准确地定位每个Java类库。我们只 要在pom.xml中相应的地方进行添加和修改即可。你需要编译时,Maven就把这些类库包放到classpath里,你需要打包,Maven就帮你把需要的类库包都复制到WEB- INF/lib/目录下。但这个有一点不好的地方,每次要在pom.xml添加依赖,必须确定这个依赖类库的groupid artifact version,有时候我们确实很难确定这些信息。幸好这个网站不错,推荐:http://mvnrepository.com。
5 参考资料
[1] 百度百科. http://baike.baidu.com/view/336103.htm
[2]jiangshachina的博客 http://www.blogjava.net/jiangshachina/archive/2006/09/01/67080.html