maven是什么?有什么用?

Maven是一个项目管理工具,它包含了

  • 一个项目对象模型 (Project Object Model),
  • 一组标准集合,
  • 一个项目生命周期(ProjectLifecycle),
  • 一个依赖管理系统(Dependency Management System),
  • 用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

约定优于配置(Convention Over Configuration)

约定优于配置是一个简单的概念。 系统,类库,框架应该假定合理的默认值,以简化使用时的配置,同时保留了用户修改默认配置权利。但是,在大部分情况下,你会发现使用 框架提供的默认值会让你的项目运行的更快或者更加方便。

在maven中,没有自定义的情况下,目录一般如下,

  • 源代码是在 /myApp/src/main/java,
  • 资源文件是在 /myApp/src/main/resources,
  • 测试代码是在 /myApp/src/test ;

项目会产生一个 JAR 文件。Maven会把

  • 编译好的字节码放到 /myApp/target/classes

并且

  • 创建的可分发JAR 文件放在 /myApp/target 。

基于maven插件的全局重用性

Maven 的核心其实不做什么实际的事情,除了解析一些 XML 文档,管理生命周期与插件之外,它什么也不知道。

Maven 被设计成将主要的职责委派给一组 Maven 插件,这些插件可以影响 Maven 生命周期,提供对目标的访问。绝大多数 Maven 的动作发生于Maven 插件的目标,如编译源码,打包二进制代码,发布站点和其它构建任务。你从Apache 下载的 Maven 不知道如何打包 WAR 文件,也不知道如何运行单元测试,Maven大部分的智能是由插件实现的,而插件从 Maven 仓库获得。

事实上,第一次你用全新的 Maven 安装运行诸如 mvn install 命令的时候,它会从中央 Maven 仓库下载大部分核心 Maven 插件。这不仅仅是一个最小化 Maven 分发包大小的技巧,这种方式更能让你升级插件以给你项目的构建提高能力。

Maven 从远程仓库获取依赖和插件的这一事实允许了构建逻辑的全局性重用。

这里举个例子,以单元测试为例,本来你工程的单元测试是基于junit3写的,本来的运行单元测试的插件版本(Maven Surefire)只能执行junit3,后来出了junit4,果断的你换成了支持注解的junit4,那么问题来了,原来版本的Maven Surefire不支持了,需要升级新版本,常规的做法是升级插件,各种麻烦,使用maven之后,只需要在POM中修改一下版本号,就是这么简单。

Maven 将一般的构建任务抽象成插件,同时这些 插件得到了很好的维护以及全局的共享,所以你不需要从头开始自定义你项目的构建系统然后提供支持。

maven与Ant的区别

对ant不了解,在《maven权威指南》中的少许内容,还不足让我完整了解ant,

从我自己的理解来看,他们最大的区别是,maven约定优于配置:maven约定了哪个目录是干嘛的,而ant都需要配置。

借鉴了下大神们的答案(作者sunboy,出处http://www.linuxidc.com/Linux/2013-05/84489.htm):

maven 简介 —— maven权威指南学习笔记(一)的更多相关文章

  1. HTTP权威指南-学习笔记

    目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...

  2. JavaScript 权威指南-学习笔记(一)

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...

  3. CSS权威指南学习笔记系列(1)CSS和文档

    题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对, ...

  4. Hadoop权威指南学习笔记二

    MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.n ...

  5. Hadoop权威指南学习笔记一

    Hadoop简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出.一起学习一起进步. 转载请注明:http://blog.csdn.net/ ...

  6. Hadoop权威指南学习笔记三

    HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...

  7. maven权威指南学习笔记(一)——简介

    maven是什么?有什么用? Maven是一个项目管理工具,它包含了     一个项目对象模型 (Project Object Model),     一组标准集合,     一个项目生命周期(Pro ...

  8. maven权威指南学习笔记(五)—— POM

    1. 简介 Archetype插件通过 pom.xml 文件创建了一个项目.这就是项目对象模型 (POM),一个项目的声明性描述. 当Maven运行一个目标的时候,每个目标都会访问定 义在项目POM里 ...

  9. maven POM —— maven权威指南学习笔记(五)

    1. 简介 Archetype插件通过 pom.xml 文件创建了一个项目.这就是项目对象模型 (POM),一个项目的声明性描述. 当Maven运行一个目标的时候,每个目标都会访问定 义在项目POM里 ...

随机推荐

  1. Python gevent学习笔记-2

    在上一篇里面介绍了gevent的最主要的功能,先来来了解一下gevent里面一些更加高级的功能. 事件 事件是一种可以让greenlet进行异步通信的手段. ? 1 2 3 4 5 6 7 8 9 1 ...

  2. 转:python 多线程就这么简单

    多线程 科技在发展,时代在进步,我们的CPU也越来越快,CPU抱怨,P大点事儿占了我一定的时间,其实我同时干多个活都没问题的:于是,操作系统就进入了多任务时代.我们听着音乐吃着火锅的不在是梦想. py ...

  3. java前端传入的json字符串保存到表中的方法

    表 service_goods_base 字段如下: 传入的json 字符串: servicePictureArray  :  [{"picServiceUrl": "h ...

  4. Laravel 的中大型专案架构

    好文:http://oomusou.io/laravel/laravel-architecture/

  5. The Best Hacking Tools

    The Best Hacking Tools Hacking Tools : List of security tools specifically aimed toward security pro ...

  6. Highway

    Highway Accepted : 78   Submit : 275 Time Limit : 4000 MS   Memory Limit : 65536 KB Highway In ICPCC ...

  7. Chart控件文档

    假设c1Chart1为Chart控件的一个实例. 一.基本框架图 二.主要外层属性(即this.c1Chart1的主要属性) 1.Header和Footer,上标题和下标题.位于this.c1Char ...

  8. java 对list 排序

    Comparable用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: /*** 根据order对User排序*/public  ...

  9. Intellij IDEA快捷键及常见问题

    在java学习与开发中经常使用Intellij IDEA,为提高效率会使用快捷方式. 现在记录下经常使用到快捷键: Ctr l+ O 快速重写父类方法 Ctrl + Shift + / xml注释&l ...

  10. JavaScript正则中\1\2的作用

    一.示例 1. 验证6个相同的数字 var reg = new RegExp(/^(\d)\1{5}/g); var a = '333333'; if(reg.test(a)) { alert('ri ...