Maven简介

简介

Apache Maven 是一个项目管理的工具。基于 项目对象模型POM(project object model)思想。 它可以帮助你管理项目的编译,文档,报告等实施过程。

maven 是依地语的一个单词,意思是技术收集者。这个项目的启动是一次尝试,希望能够简化印度首都雅加达当时的一个涡轮工程项目的构建过程。当时我们已经有了好几个用Ant构建项目,每一个项目的Ant构建文件都只是轻微的不同,这些构建文件以及jar包都需要被 CVS(中央版本控制系统) 所管理。我们迫切需要一个标准的流程来构建项目,一个简明的声明文件来描述项目的组成,以及更简易的发布项目文档,分享jar包的方法。因此我们写了这个工具。


Maven的目标

让开发者能在最短的时间内了解一个项目的完整状态

  • 让构建过程更简单
  • 提供统一的构建系统
  • 提供高质量的项目文档
  • 提供最佳的项目实践指南
  • 无感知的迁入新功能

让构建过程更简单

虽然使用Maven并不能消除你对底层机制知识的需要,但Maven确实可以帮你屏蔽很多细节知识

提供统一的构建系统

Maven使用POM以及一系列插件来提供一个统一的构建系统。一旦你熟悉了Maven,你就能驾驭所有用Maven构建的项目

提供高质量的项目文档

Maven 可以输出大量有用的文档,这些信息一部分来自你的POM文件,一部分来自于项目项目源码。比如:

  • 修改日志文档:数据来自于版本控制系统 git svn cvs
  • 引用文档
  • 邮件列表
  • 依赖列表
  • 单元测试报告以及覆盖率

当Maven改进了这些文档的内容,这些修改对开发者来说都是透明的。开发者同样可以通过一些插件,来修改这些文档的格式内容。

提供项目最佳实践的指南

Maven收集了目前最佳项目实践的理论,让开发者更简单的将它们用在项目开发上。

举个例子,规格说明书,运行,以及单元测试报告都是Maven构建圈中的常见部分。当前单元测试的最佳实践指南如下:

  • 将测试代码保存在一个单独,但并行于源码的目录中
  • 使用测试用例的名字来定位和执行测试
  • 有测试样例来构建测试环境,不依赖自定义的测试准备脚本

Maven 也希望能优化项目实施流程,比如说发布管理,以及 issue 跟进。同时也提供了一些项目目录结构上的指南

无感知的迁入新功能

Maven 提供了一个简单的方法让Maven客户端自动更新安装。所以安装新的Maven版本以及更新第三方插件都是没什么意义的


Maven 不是什么

你可能听过下面一些对Maven的观点

  • Maven 是一个站点及文档工具
  • Maven 拓展了Ant 并且让你下载依赖
  • Maven 是可重用的Ant 脚本集合

在Maven的目标栏目提到的功能,只是冰山一角。它们与Maven的目标还有有点不一样的。

Maven 提倡项目的最佳实践,但我们认识到有些项目基于历史原因可能无法使用这些实践想法。当Maven 需要考虑灵活性,来适应具有这些情况的项目,它就不可能不折损自身的目标。如果你决定使用Maven, 并且有一个不同寻常的构建结构,你就需要适当放弃一些Maven的特性。

你可能感兴趣的:(maven)