介绍
Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需做一些简单的配置,就可以批量完成项目的构建、报告和文档的生成工作。
如果你已经有十次输入同样的Anttargets来编译你的代码、jar或者war、生成javadocs,你一定会自问,是否有一个重复性更少却能同样完成该工作的方法。Maven便提供了这样一种选择,将你的注意力从作业层转移到项目管理层。Maven项目已经能够知道如何构建和捆绑代码,运行测试,生成文档并宿主项目网页。
Maven还提供了一套描述软件构件和依赖的模型。采用groupId+artifactId+version的形式唯一确定一个构件,然后采用在pom文件中的dependency中描述其依赖的构件,并且依赖是可以传递的。在运行时根据构件的依赖描述生成一个依赖的树形结构。并提供依赖同意构件不同版本的依赖监测工具,避免出现一个类有两个版本导致虚拟机加载类后出现不一致的情况。最终达到整理整个系统依赖关系,使可重用的构件能被重用。
特点
Maven这个单词来自于意第绪语,意为知识的积累,最早在JakataTurbine项目中它开始被用来试图简化构建过程。当时有很多项目,它们的Antbuild文件仅有细微的差别,而JAR文件都由CVS来维护。
于是Maven创始者开始了Maven这个项目,该项目的清晰定义包括,一种很方便的发布项目信息的方式,以及一种在多个项目中共享JAR的方式、Maven是一个项目管理工具,它包含了一个项目对象模型(ProjectObjectModel),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖管理系统(DependencyManagementSystem),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。Maven有一个生命周期,当你运行MVNinstall的时候被调用。这条命令告诉Maven执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是Maven运行了许多默认的插件目标,这些目标完成了像编译和创建一JAR件这样的工作。
此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。