Maven 简明教程

Maven - Overview

What is Maven?

Maven 是一种项目管理和理解工具,为开发人员提供了完整的构建生命周期框架。开发团队几乎可以在很短的时间内自动执行项目的构建基础设施,因为 Maven 使用了标准目录布局和默认构建生命周期。

在涉及多个开发团队的环境中,Maven 可以迅速建立按照标准工作的方式。由于大部分项目设置简单可重复利用,Maven 在创建报告、检查、构建和测试自动化设置时,简化了开发人员的工作。

Maven 为开发人员提供了管理以下内容的方式:

  1. Builds

  2. Documentation

  3. Reporting

  4. Dependencies

  5. SCMs

  6. Releases

  7. Distribution

  8. Mailing list

总结来说,Maven 简化并标准化了项目构建过程。它无缝处理编译、分发、文档编制、团队协作及其他任务。Maven 提高了可重复利用性,并负责大部分与构建相关的任务。

Maven Evolution

Maven 最初设计目的是简化 Jakarta Turbine 项目中的构建流程。它包含多个项目,每个项目都包含稍有不同的 ANT 构建文件。JAR 已签入 CVS。

Apache 小组随后开发了 Maven ,它可以同时构建多个项目,发布项目信息,部署项目,在多个项目中共享 JAR,并协助团队协作。

Objective

Maven 的主要目标是为开发人员提供以下内容:

  1. 一个全面、可重复利用、可维护且易于理解的项目模型。

  2. 与此声明模型相交互的插件或工具。

Maven 项目结构和内容在 XML 文件 pom.xml 中声明,该文件称为项目对象模型 (POM),它是整个 Maven 系统的基本单元。在后续章节中,我们将详细解释 POM。

Convention over Configuration

Maven 在 Convention 上使用 Configuration ,这意味着开发人员无需自己创建构建流程。

开发人员不必提及每个配置详情。Maven 为项目提供了可行的默认行为。当创建 Maven 项目时,Maven 将创建默认项目结构。开发人员只需要相应放置文件,而无需在 pom.xml 中定义任何配置。

例如,下一表格显示了项目源代码文件、资源文件和其他配置的默认值。假设 ${basedir} 表示项目位置 -

Item

Default

source code

${basedir}/src/main/java

Resources

${basedir}/src/main/resources

Tests

${basedir}/src/test

Complied byte code

${basedir}/target

distributable JAR

${basedir}/target/classes

为了构建项目,Maven 为开发人员提供了提及生命周期目标和项目依赖项的选项(依赖于 Maven 插件功能及其默认约定)。大部分项目管理和构建相关任务均由 Maven 插件维护。

开发人员可以构建任何 Maven 项目,而无需理解各个插件的工作方式。我们在后续章节中将详细讨论 Maven 插件。

Features of Maven

  1. 遵循最佳实践的简单项目设置。

  2. 在所有项目中一致使用。

  3. 依赖项管理,包括自动更新。

  4. 大型且愈发丰富的库存储库。

  5. 可扩展,能够在 Java 或脚本语言中轻松编写插件。

  6. 几乎不需额外配置即可即时访问新功能。

  7. Model-based builds − Maven 能够将任意数量的项目构建成 jar、war、metadata 等预定义的输出类型。

  8. Coherent site of project information − Maven 能够根据构建过程中的元数据生成网站和 PDF,包括完整的文档。

  9. Release management and distribution publication − 无需额外配置,Maven 便会整合 CVS 等源代码管理系统,并管理项目的发布。

  10. Backward Compatibility − 您能轻松地将某个项目的多个模块从旧版 Maven 移植到 Maven 3。它也可支持旧版本。

  11. Automatic parent versioning − 无需在维护的子模块中指定父级。

  12. Parallel builds − 它分析项目依赖图并使您能够并行构建调度模块。利用此功能,您可提高 20-50% 的性能。

  13. Better Error and Integrity Reporting − Maven 改进了错误报告,并为您提供指向 Maven Wiki 页面的链接,以便您获取错误的完整描述。