欢迎来到我的地盘:今天是

若得山花插满头,莫问奴归处!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来定义生命周期阶段(Phase)中插件(plugin)目标(gole)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目。

 

Maven与ant对比

Ant工具仅仅关注预处理,编译,打包,测试和分发,是一个构建工具。而Maven功能是Ant 的超集,属于项目生命周期管理工具不仅仅关注于构建阶段,Maven还包括生成报告,生成Web站点等等。

Ant:

         Ant没有约定一个一般项目的目录结构,必须明确告诉ant到哪去找源代码等等信息。

         Ant是程序化的,必要告诉它什么时候该做什么事情。

         Ant没有生命周期,必须定义目标和目标之间的依赖,比如为每个目标配置任务。

Maven:

         Maven拥有约定,你遵守了约定Maven就知道去哪寻找源代码等等。

         Maven是声明式的,只需要创建一个pom.xml,maven就知道该做什么事情。

         Maven拥有一个生命周期,当运行Maven install,这条语句告诉Maven执行一系列步骤,这些步骤也是约定好的,不需要手动指定执行顺序。

Ant和Maven的选择不是一成不变的,比如你现在的构建生命周期需要高度可自定义,则Maven的固定生命周期就不太适用。

 

Maven的核心理念——约定优于配置

系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置,配置虽然可以根据个人情况和喜好定制,但是却严重影响了项目人员之间的协作沟通。

Maven的约定:

源代码在                 src/main/java

资源文件在              src/main/resource

测试代码在              src/test

编译后的二进制文件在         /target/classes

可分发的最终文件(.jar,.war,.ear)在                 /target

(如果换成非约定优于配置的ant做以上的事情需要为每个都配置目录,如果有特殊需求需要配置路径的,maven也支持手动配置,但是默认为以上约定)

 

Maven成功的核心原因——项目配置统一接口

在以前,从版本服务器上检出两个项目,要想将它们打包成最终的可发布文件是非常困难的,因为你需要了解这两个项目是什么结构,分别需要发布什么东西,每个东西放在什么位置,现在新的程序员不需要了解这些,只需要执行maven install就能方便构建。

 

Maven是基于插件的

Maven本身不做什么事情,几乎所有操作都是在插件上完成的,第一次执行命令会从中央服务器上下载命令执行插件来完成操作。

posted on 2010-05-07 14:35  莫问奴归处  阅读(1473)  评论(0编辑  收藏  举报
轩轩娃