Maven - 概述

Maven是什么?

Maven是一种项目管理和理解工具。Maven向开发者提供了一个完整的构建生命周期框架。开发团队几乎不用花时间就可以使用自动化构建项目的基础框架,因为 Maven 使用了一套标准的目录结构和默认的构建生命周期。

在存在多个开发团队的场景中,Maven可以在很短的时间内按标准建立起工作方式。因为大多数的项目配置简单并且可重用,Maven简化了开发者在创建报告,检查,构建和测试自动化配置中的工作。

Maven提供给开发者管理如下过程的方法:

  • 项目构建(Builds)
  • 文档(Documentation)
  • 报告(Reporting)
  • 项目依赖(Dependencies)
  • 软件配置管理(SCMs)
  • 发布(Releases)
  • 分发(Distribution)
  • 邮件列表(mailing list)

总的来说,Maven简化和统一了项目构建的过程。它无缝地处理项目编译,分发,文档,团队合作和其他任务,增加了任务处理的重用性,并可以处理大多数构建相关的任务。

Maven的历史

Maven最初是在Jakarta Turbine项目中设计出来,用作简化项目构建步骤。这个项目有若干子项目并且每个项目包含的ANT构建文件只有些许的差别。项目中JAR包那时是检入到CVS中。 然后Apache组织开发了Maven ,它可以把多个项目一起构建,发布多项目信息,完成多项目部署,在多项目间共享JAR包并且帮助团队间一起合作。

Maven的目标

Maven 主要的目标是提供给开发者

  • 一种综合全面的模型,对项目来说可以重用,易于维护并且更容易理解
  • 可以与这种声明式模型相互作用的插件或者工具

Maven项目结构和内容声明在一个xml文件中——pom.xml,称之为项目对象模型(POM)。它是整个Maven系统的基本单元。更多信息参考 Maven POM 章节。

约定优先于配置

Maven使用约定优先于配置,这意味着开发者不用自己创建构建流程。

开发者不需要指明每一个配置详情。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 - 插件 章节。

results matching ""

    No results matching ""