以下内容翻译自 Apache Maven 官网.
Maven 是一个软件项目管理工具. 基于 项目对象模型(project object model, POM), Maven 可以 通过一块中央信息 来 管理项目的 构建(build), 报告(reporting) 和 文档(documentation).
Maven是一个Yiddish(一种犹太语)词汇,意思是知识的积累者.
Maven 最初是为了简化 Jakarta Turbine 项目的 构建(build) 过程.
我们想用一个标准的方式 来 构建项目, 一个清晰的项目定义, 一种发布项目信息的简单方法, 以及一种跨多个项目共享 Jar 的方法(share JARs across several projects).
Maven 是一个工具, 可以用于 构建 和 管理 任何基于 Java 的项目(any Java-based project).
我们希望我们已经创建了一些东西, 使得 Java 开发者(Java developer) 的日常工作更容易, 并且有助于对任何基于 Java 的项目的理解(comprehension).
Maven 的主要目标(primary goal) 是 让 开发者在最短的时间内理解 开发工作(development effort) 的完整状态.
为了实现这一目标, Maven 处理(deals with) 几个重要的方面:
虽然使用 Maven 没有消除(eliminate) 需要对底层机制(underlying mechanisms)了解, 但它确实让开发者不用了解很多细节.
Maven使用 POM 和一组 插件 构建项目. 一旦你熟悉了一个 Maven 项目, 你就知道所有 Maven 项目是如何构建的. 这在 浏览/导航(navigate) 多个项目时节省了时间.
Maven 提供了有用的项目信息, 这些信息部分来自POM, 部分来自你的项目源(your project’s sources). 例如, Maven可以提供:
第三方代码分析产品(Third party code analysis products) 还提供了 Maven插件, 可以将其报告添加到Maven提供的标准信息中.
Maven 致力于收集当前 最佳实践开发, 同时让它更容易在该方向上指导项目.
例如, 单元测试(unit tests)的 规范, 执行和报告 是 使用Maven的 正常构建周期(normal build cycle) 的一部分.
目前单元测试最佳实践被用作 准则/指导(guidelines):
Maven还协助项目工作流(assists in project workflow), 比如 发布(release) 和 问题管理(issue management).
Maven 在如何布局 项目的目录结构(project’s directory structure) 提供了一些指导.
一旦了解了布局(layout), 就可以轻松地浏览使用 Maven 的其他项目.
虽然对 项目布局(project layout) 采取了固执己见的方法(opinionated approach),
但由于历史原因, 一些项目可能不适合这种结构.
虽然 Maven 的设计可以灵活地满足不同项目的需求,
但它不能在不影响其目标的情况下(without compromising its objectives)满足每种情况.
如果你的项目有一个 不寻常的构建结构(unusual build structure), 无法重新组织,
那么你可能不得不放弃(forgo) 一些特性(features) 或 完全放弃使用 Maven.