产生背景
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。 [1]
主要功能
Maven的主要目标是允许开发人员理解完整的 在最短的时间内完成开发工作。简化构建过程,提供统一的构建系统,提供高质量的项目信息,鼓励更好的发展做法。[4]
Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和 Ant代表两个差异很大的工具,所以接下来只说明这两个工具的等同组件之间的区别,如表 1 所示。[1]
说明
|
Maven
|
Ant
|
标准构建文件
|
project.xml 和 maven.xml
|
build.xml
|
特性处理顺序
|
${maven.home}/bin/driver.properties
${project.home}/project.properties
${project.home}/build.properties
${user.home}/build.properties
通过 -D 命令行选项定义的系统特性
最后一个定义起决定作用。
|
通过 -D 命令行选项定义的系统特性
由 任务装入的特性
第一个定义最先被处理。
|
构建规则
|
构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。
|
构建规则或多或少是静态的,除非使用<script>任务
|
扩展语言
|
插件是用 Jelly(XML)编写的。
|
插件是用 Java 语言编写的。
|
构建规则可扩展性
|
通过定义 <preGoal> 和 <postGoal> 使构建 goal 可扩展。
|
构建规则不易扩展;可通过使用 <script> 任务模拟 <preGoal> 和 <postGoal> 所起的作用。
|
Apache Maven是一个(特别是Java编程)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当使用Maven的时候,用一个明确定义的项目对象模型来描述项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 有一个生命周期,当运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
此外,Maven能够很方便的管理项目报告,生成站点,管理JAR文件,等等。