Apache Maven是一个软件项目管理和综合工具。 基于项目对象模型(POM)的概念,Maven可以从中央信息管理项目的构建,报告和文档。
Maven是一个意第绪语词汇,意思是知识的累加器,最初是为了简化雅加达涡轮项目的构建过程而开始的。 有几个项目每个都有自己的Ant构建文件,它们都略有不同,JAR被检入CVS。 开发者希望建立项目的标准方法,对项目组成的明确定义,简单的发布项目信息的方式以及跨多个项目共享JAR的方法。
结果是现在可以用于构建和管理任何基于Java的项目的工具。Maven开发团队希望他们创建的是一些可以使Java开发人员日常工作变得更简单,并且通常可以帮助理解任何基于Java的项目。
功能摘要(原文:http://maven.apache.org/maven-features.html)
简而言之,以下是Maven的主要功能:
- 简单的项目设置,遵循最佳实践 —— 在几秒钟内启动一个新的项目或模块;
- 所有项目的一致使用 —— 意味着新开发人员进入项目的时间不会增加;
- 优越的依赖关系管理包括自动更新,依赖关闭(也称为传递依赖关系);
- 能够同时轻松处理多个项目;
- 一个大型的、不断增长的库和元数据仓库,使用开箱即用,并与最大的开放源码项目进行安排,以实时发布最新版本;
- 可扩展,能够轻松地使用Java或脚本语言编写插件;
- 即时访问新功能,很少或没有额外的配置;
- 在Maven之外的依赖关系管理和部署的Ant任务;
- 基于模型的构建:Maven能够根据项目的元数据将任意数量的项目构建到预定义的输出类型(如JAR,WAR或分发)中,而无需在大多数情况下执行任何脚本。
- 项目信息的相干站点:使用与构建过程相同的元数据,Maven可以生成一个网站或PDF,包括您需要添加的任何文档,并添加到有关项目开发状态的标准报告中。这个信息的例子可以在这个网站左侧的“项目信息”和“项目报告”子菜单的底部。
- 发布管理和分发发布:无需额外的配置,Maven将与您的源代码管理系统(如Subversion或Git)集成,并根据某个标签管理项目的发布。它也可以将其发布到分发位置供其他项目使用。 Maven能够发布单个输出,例如JAR,包括其他依赖关系和文档的归档,或作为源分发。
- 依赖管理:Maven鼓励使用JAR和其他依赖关系的中央存储库。 Maven提供了一个机制,您的项目的客户端可以使用它来从中央JAR存储库下载与Perl的CPAN类似的从项目构建所需的任何JAR。这允许Maven的用户在项目之间重用JAR,并鼓励项目之间的通信,以确保处理向后兼容性问题。