Maven是Apache组织中的一个很成功的开源项目,主要服务于基于Java平台的项目构建,依赖管理和项目信息管理.
在ITOO项目开发过程中,我们都体会了打包部署的过程.使用Maven能帮助我们自动化构建过程,从清理,编译,测试到生成报告,再到打包部署,我们不用一遍又一遍地输入命令,一次又一次地点击鼠标,有了Maven一切都交给它去做吧,这就是自动构建.而且,Maven是跨平台的,无论是在windows上还是Linux上或者Mac上都能使用同样的命令,它对外提供一致的操作接口,这是它流行的重要原因.
Maven除了是构建工具,还是一个依赖管理工具.具体来说,就是它提供了中央仓库,我们可以获得想要的构件,而这些构件也是Maven自动下载的.在我们的项目中,要借用一些第三方的开源类库,这些类库都是通过依赖的方式引入到项目中,但依赖太多就会产生一系列问题,比如,版本不一致,版本冲突,依赖臃肿等.这时,Maven提供了一个特别好的解决方案,它通过一个坐标系统准确的定位一个构件,换句话说就是用一组坐标找到唯一的一个Java类库,借助坐标管理构件让我们的依赖有序了.
Maven还是项目信息管理工具,管理包括项目描述,开发者列表等信息,帮助我们获得测试报告,日志报告等项目信息.Maven对于项目目录结构和测试用例命名方式等都有既定的规则,遵循这些规则,用户在项目间切换的时候就不用额外的学习成本,这一点可以说是约定优于配置.
Maven的具体安装和使用就不在这里重复了,项目开发人员多了,就一定会有环境搭建手册和快速上手指导文档,Maven的安装和使用是其中必不可少的一部分.熟练配置Maven是我们的基本功.
Maven项目的核心是pom.xml.POM(Project
Object Model),项目对象模型,定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等.如ITOO的pom.xml文件一样,如下代码示例:
<dependencies> <dependency> <groupId>com.tgb</groupId> <artifactId>itoo-base</artifactId> <version>${itoo-base.version}</version> </dependency> <dependency> <span style="white-space:pre"> </span><groupId>com.tgb</groupId> <artifactId>itoo-tool</artifactId> <version>${itoo-tool.version}</version> </dependency> </dependencies>
这段代码中定义了一个项目的基本坐标,groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联.artifactId定义了当前Maven项目在组中唯一的ID,version就是项目的当前版本了.
这个是POM代码,我们没有写一行实际的java代码就定义了一个Maven项目的POM,这说明POM和Java代码是解耦的,这就尽可能避免了Java代码和POM代码间的相互影响.
以上只是从宏观上介绍了Maven,在项目开发过程中对Maven的使用技巧需要细细体会,我也会将自己的经验整理好和大家一起分享.