什么是Maven?
介绍
Maven原是一个意第绪语单词,意思是知识的累加器,最初是为了简化Jakarta Turbine项目中的构建过程而开始的。这个工程有几个项目组成,并且每个项目都有自己的Ant构建文件,这些文件都略有不同,当时JAR都是通过签入CVS进行管理。我们需要一种标准的方法来构建项目,明确定义项目的内容,发布项目信息的简便方法以及跨多个项目共享JAR的方法。
为了这个目录我们开发了一个工具,就是现在可用于构建和管理任何基于Java的项目工具Maven。我们希望我们已经创建了一些东西(Maven),使Java开发人员的日常工作变得更加容易,并且通常有助于理解任何基于Java的项目。
Maven的目标
Maven的主要目标是让开发人员在最短的时间内理解开发工作的完整状态。为了实现这一目标,Maven试图处理以下几个方面的问题:
- 使构建过程变得简单
- 提供统一的构建系统
- 提供优质的项目信息
- 提供最佳实践开发指南
- 允许透明迁移到新功能
使构建过程变得简单
虽然使用Maven并不能消除对底层机制的了解,但Maven确实提供了很多屏蔽细节来确保使用过程变得简单。
提供统一的构建系统
Maven允许项目使用其项目对象模型(POM)和一组使用Maven由所有项目共享的插件进行构建,从而提供统一的构建系统。一旦您熟悉了Maven项目的构建方式,您就会自动了解所有Maven项目的构建方式,从而在尝试在许多项目中应用它,它给我们工作节省了大量时间。
提供优质的项目信息
Maven提供了大量有用的项目信息,这些信息部分来自您的POM,部分来自您项目的来源。例如,Maven可以提供:
- 更改直接从源代码管理创建的日志文档
- 交叉引用的来源
- 邮件列表
- 依赖列表
- 单元测试报告包括报道
随着Maven的改进,所提供的信息集将得到改善,所有这些对Maven的用户都是透明的。
其他产品也可以提供Maven插件,以允许他们的项目信息以及Maven提供的一些标准信息,所有这些仍然基于POM。
提供最佳实践开发指南
Maven旨在收集最佳项目实践开发原则,并使指导项目朝这个方向变得容易。
例如,单元测试的规范,执行和报告是使用Maven的正常构建周期的一部分。目前的单元测试最佳实践被用作指南:
- 将测试源代码保存在单独但并行的源代码树中
- 使用测试用例命名约定来定位和执行测试
- 让测试用例设置他们的环境,而不是依赖于自定义构建以进行测试准备。
Maven还旨在协助项目工作流程,例如发布和问题管理。
Maven还建议了一些关于如何布局项目目录结构的指南,这样一旦你学习了布局,你就可以轻松地应用到任何其他使用Maven的项目和相同的默认值。
允许透明迁移到新功能
Maven为Maven客户端提供了一种简单的方法来更新他们的安装,以便他们可以利用对Maven本身所做的任何更改。
出于这个原因,从第三方或Maven本身安装新的或更新的插件已经变得微不足道了。
什么是Maven?
您可能听说过Maven的以下一些事情:
- Maven是一个站点和文档工具
- Maven扩展了Ant以允许您下载依赖项
- Maven是一组可重用的Ant scriptlet
虽然Maven做了这些事情,正如你在上面的“什么是Maven?”一节中所读到的,这些并不是Maven所拥有的唯一功能,它的目标是完全不同的。
Maven确实鼓励最佳实践,但我们意识到由于历史原因,某些项目可能不符合这些理想。虽然Maven的设计灵活,在某种程度上,在这些情况下和不同项目的需求,但它不能满足每一种情况,而不会妥协其目标的完整性。
如果你决定使用Maven,并且有一个不可重组的不寻常的构建结构,你可能不得不忘记一些功能或完全使用Maven。