Maven是开源、跨平台(Windows\Linux\Mac)主要服务于基于Java平台的自动化项目构建、依赖管理、报告和文档的软件项目管理工具。
项目构建(Build)包括:项目的清理、编译、测试、生成文档、打包和部署的过程。Maven最大化地消除了构建的重复,抽象了构建生命周期,并且为绝大部分的构建任务提供了已实现的插件。
依赖管理(Dependency Management):Maven通过坐标有序系统管理第三方构件(artifact)、类库(Jar文件)。Maven为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行的开源类库。只要定位了坐标,Maven就能够帮我们自动下载。
Maven包含了一个项目对象模型(POM,Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件目标的逻辑。
Maven能够很方便的帮你管理项目报告(项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址等),测试报告,静态分析报告,源码版本日志报告,生成站点,管理JAR文件。
无论是小型的开源类库项目,还是大型的企业级应用;无论是传统的瀑布式开发,还是流行的敏捷模式,maven都能大显身手。
| Maven | Ant |
标准构建文件 | project.xml 和 maven.xml | build.xml |
特性处理顺序 | 1.${maven.home}/bin/driver.properties 2.${project.home}/project.properties 3.${project.home}/build.properties 4.${user.home}/build.properties 5.通过 -D命令行选项定义的系统特性 最后一个定义起决定作用。 | 1.通过 -D命令行选项定义的系统特性 2.由 任务装入的特性 第一个定义最先被处理。 |
构建规则 | 构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。 | 构建规则或多或少是静态的,除非使用<script>任务 |
扩展语言 | 插件是用 Jelly(XML)编写的。 | 插件是用 Java 语言编写的。 |
构建规则可扩展性 | 通过定义 <preGoal> 和 <postGoal> 使构建 goal 可扩展。 | 构建规则不易扩展;可通过使用 <script> 任务模拟 <preGoal> 和 <postGoal> 所起的作用。 |
Maven的书籍《Maven实战》作 者许晓斌 著
本书代码:http://www.juvenxu.com