介绍
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 是一个站点和文档工具
- Maven 扩展了 Ant,让您可以下载依赖项
- Maven 是一组可重用的 Ant scriptlet
虽然 Maven 可以做这些事情,但正如您可以在上面的“什么是 Maven?”中读到的那样。部分,这些并不是 Maven 唯一的功能,而且它的目标也有很大不同.