介绍

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 唯一的功能,而且它的目标也有很大不同.