什么是Maven?
Maven是跨平台的项目管理工具。是Apache组织中的一个颇为成功的开源项目。
Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。
1. Maven是优秀的构建工具
Maven抽象了一个完整的构建生命周期模型,这个模型吸取了大量其它构建脚本和构建工具的优点,总结了大量项目的实际需求。遵循这个模型,可以避免很多不必要的错误,可以直接使用大量成熟的Maven插件来完成我们的任务。
Maven还有一个优点,它可以帮助我们标准化构建过程。所有项目的构建命令都是简单一致的,这极大地避免了不必要的学习成本,而且有利于促进项目团队的标准化。
Maven作为一个构建工具,不仅能自动化构建,还能够抽象构建过程,提供构建任务实现;它跨平台,对外提供一致的操作接口。
2. Maven是依赖管理工具和项目信息管理工具
Maven提供了一个优秀的解决方案来解决项目依赖的问题,通过一个坐标系统,准确地定位每一个构件(artifact),通过一组坐标Maven能够找到任何一个Java类库。
Maven可以方便的管理分散在项目中各个角落的项目信息,包括项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址等。
Maven提供了一个免费的中央仓库,可以轻易的在里面找到任何流行的开源类库,对项目的初期组件提供了非常大的便利。只要定位了坐标,Maven就能够自动下载,省却了去各个项目首页搜寻类库的麻烦。
Maven对于项目目录的结构、测试用例命名方式等内容都有既定的规则,遵循了这些规则在项目切换的时候就免去了额外的学习成本,可以说是约定优于配置。
3. Maven与极限编程
极限编程(XP)是目前较为流行的敏捷开发方法,它强调拥抱变化。通过使用Maven,可以帮助XP团队实现一些XP的核心价值。
a. 简单
Maven暴露了一组一致、简洁的操作接口,能够简化构建系统的复杂度。
b. 交流与反馈
与版本控制系统结合后,所有开发人员都能够执行最新的构建并快速得到反馈。
c. 测试驱动开发(TDD)
TDD强调测试先行,所有产品都应该由测试用例覆盖。测试是Maven生命周期的最重要的组成部分之一,并且Mavan能够很好的支持业界流行的测试框架,如Junit和TestNG
d. 十分钟构建
十分钟构建强调我们能够随时快速地从源码构建出最终的产品,对于Maven来说,只需要一些配置,一条简单的命令就可以轻松的得到最终的产品。
e. 持续集成(CI)
CI强调项目以很短的周期(如15分钟)集成最新的代码。实际上,CI的前提是源码管理系统和构建系统。目前业界流行的CI服务器如Hudson和CruiseControl都能很好地和Maven进行集成。
f. 富有信息的工作区
这条实践强调开发者能够快速方便地了解到项目的最新状态。使用Maven发布的项目报告站点,并配置需要的项目报告,如测试覆盖率报告,能够把消息推送到开发人员眼前。
总结:
对于目前来说,虽然Maven有着这样或者那样的Bug或者某一方面的不完善,但是依然是目前最方便,最流行,最好用的项目管理工具。