介绍

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 scriptlet

当 Maven 做这些事情时,您可以在上面的“什么是 Maven?”中阅读。部分,这些不是 Maven 的唯一特性,而且它的目标也大不相同。