介绍
Maven是意第绪语,意为知识的积累,最初是为了简化Jakarta Turbine项目中的构建过程。有几个项目,每个项目都有自己的Ant构建文件,所有项目都略有不同。JAR已检入CVS。我们想要一个标准的方式来构建项目,明确定义项目的组成,一种简单的方式来发布项目信息,以及一种在多个项目之间共享JAR的方式。
结果是一个可以用于构建和管理任何基于Java的项目的工具。我们希望我们已经创建了一些东西,可以使Java开发人员的日常工作变得更轻松,并且通常有助于理解任何基于Java的项目。
Maven的目标
Maven的主要目标是使开发人员能够在最短的时间内理解开发工作的完整状态。为了实现此目标,Maven处理了几个令人关注的领域:
- 简化构建过程
- 提供统一的构建系统
- 提供优质的项目信息
- 鼓励更好的开发实践
简化构建过程
尽管使用Maven不会消除对底层机制的了解,但Maven确实使开发人员免受许多细节的困扰。
提供统一的构建系统
Maven使用其项目对象模型(POM)和一组插件来构建项目。一旦熟悉了一个Maven项目,便知道所有Maven项目是如何构建的。这样可以节省浏览多个项目时的时间。
提供优质的项目信息
Maven提供了有用的项目信息,这些信息部分来自您的POM,部分来自项目源。例如,Maven可以提供:
- 更改直接从源代码管理创建的日志
- 交叉引用来源
- 项目管理的邮件列表
- 项目使用的依赖项
- 单元测试报告,包括覆盖范围
第三方代码分析产品还提供了Maven插件,可将其报告添加到Maven提供的标准信息中。
提供最佳实践开发指南
Maven的目的是收集有关最佳实践开发的最新原则,并使其易于朝着这个方向进行指导。
例如,单元测试的规范,执行和报告是使用Maven的常规构建周期的一部分。当前的单元测试最佳实践被用作准则:
- 将测试源代码保存在单独但并行的源树中
- 使用测试用例命名约定来定位和执行测试
- 让测试用例设置其环境,而不是自定义构建以进行测试准备
- Maven还协助项目工作流程,例如发布和问题管理。
Maven还建议一些有关如何布局项目目录结构的准则。一旦学习了布局,就可以轻松浏览使用Maven的其他项目。
尽管采用了自以为是的方法来进行项目布局,但由于历史原因,某些项目可能不适合此结构。尽管Maven旨在灵活地适应不同项目的需求,但它不能在不影响其目标的情况下适应每种情况。
如果您的项目具有无法重组的异常构建结构,则可能必须放弃某些功能或完全使用Maven。
什么不是Maven?
您可能听说过有关Maven的以下一些事情:
- Maven是站点和文档工具
- Maven扩展了Ant以允许您下载依赖项
- Maven是一组可重用的Ant脚本
在Maven执行这些操作的同时,您可以在上面的“什么是Maven?”中阅读到。部分,这些并不是Maven唯一的功能,并且它的目标是完全不同的。