当前位置: 首页 > 工具软件 > Apache Maven > 使用案例 >

Apache Maven 简介

阎咏思
2023-12-01

以下内容翻译自 Apache Maven 官网.

1 Introduction

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).

2 Maven’s Objectives

Maven 的主要目标(primary goal) 是 让 开发者在最短的时间内理解 开发工作(development effort) 的完整状态.

为了实现这一目标, Maven 处理(deals with) 几个重要的方面:

  • 让构建过程简单.
  • 提供统一的构建系统.
  • 提供优质的项目信息.
  • 鼓励更好的开发实践(development practices).

2.1 让构建过程更简单

虽然使用 Maven 没有消除(eliminate) 需要对底层机制(underlying mechanisms)了解, 但它确实让开发者不用了解很多细节.

2.2 提供统一的构建系统

Maven使用 POM 和一组 插件 构建项目. 一旦你熟悉了一个 Maven 项目, 你就知道所有 Maven 项目是如何构建的. 这在 浏览/导航(navigate) 多个项目时节省了时间.

2.3 提供优质的项目信息

Maven 提供了有用的项目信息, 这些信息部分来自POM, 部分来自你的项目源(your project’s sources). 例如, Maven可以提供:

  • 通过源控制(source control) 更改日志
  • 交叉引用 源(sources)
  • 项目管理的邮件列表
  • 项目使用的依赖
  • 单元测试报告, 包括覆盖率

第三方代码分析产品(Third party code analysis products) 还提供了 Maven插件, 可以将其报告添加到Maven提供的标准信息中.

2.4 提供最佳开发实践准则(guidelines)

Maven 致力于收集当前 最佳实践开发, 同时让它更容易在该方向上指导项目.
例如, 单元测试(unit tests)的 规范, 执行和报告 是 使用Maven的 正常构建周期(normal build cycle) 的一部分.

目前单元测试最佳实践被用作 准则/指导(guidelines):

  • 将 测试代码(test source code) 保存在独立的(separate) 但并行的(parallel) 源码树(source tree)中.
  • 使用测试用例命名约定(test case naming conventions) 来 定位 和 执行 测试.
  • 让测试用例设置(setup) 他们的环境, 而不是为测试定制构建(customizing the build for test preparation)

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.

 类似资料: