读书人

maven常见有关问题

发布时间: 2012-06-29 15:48:46 作者: rapoo

maven常见问题

maven常见问题问答

1.前言

Maven,发音是[`meivin],"专家"的意思。它是一个很好的项目管理工具,很早就进入了我的必备工具行列,但是这次为了把project1项目完全迁移并应用maven,所以对maven进行了一些深入的学习。写这个学习笔记的目的,一个是为了自己备忘,二则希望能够为其他人学习使用maven 缩短一些时间。

2. maven概要

首先我把maven的概念快速的梳理一下,让我们快速地建立起一个比较精确的maven应用场景。

2.1 maven不是什么

读书时候要先限定范围,避免一些有害的遐想。要说maven不是什么,我们可以从如下几个要点来展开

  1. maven不是ant,也不是make。?
    我们以前接触的构建工具,需要写一些详细的步骤,比如:?compile project1/src/*.java?等类似的语句。这些语句正是我们使用ant和make所要编写的东西。maven采用了"约定优于配置"的方法,一些开发常用的操作和步骤已经固化在 maven中,所以使用者不再需要去编写那些烦人的语句了。同时,maven内置了开发流程的支持,它不仅能够编译,同样能够打包、发布,也能够一气呵成做完这些所有的步骤。
  2. maven不是ivy?
    依赖管理是maven的功能之一,虽然很多人包括我以前都是只用它的依赖管理功能,但是要深入运用的话,我们就可以看到更多的内容。更重要的是,maven在依赖关系中加入了scope的概念,进一步细化了依赖关系的划分。

2.2 maven是什么

maven将自己定位为一个项目管理工具。它负责管理项目开发过程中的几乎所有的东西:

  1. 版本?
    maven有自己的版本定义和规则
  2. 构建?
    maven支持许多种的应用程序类型,对于每一种支持的应用程序类型都定义好了一组构建规则和工具集。
  3. 输出物管理?
    maven可以管理项目构建的产物,并将其加入到用户库中。这个功能可以用于项目组和其他部门之间的交付行为。
  4. 依赖关系?
    maven对依赖关系的特性进行细致的分析和划分,避免开发过程中的依赖混乱和相互污染行为
  5. 文档和构建结果?
    maven的site命令支持各种文档信息的发布,包括构建过程的各种输出,javadoc,产品文档等。
  6. 项目关系?
    一个大型的项目通常有几个小项目或者模块组成,用maven可以很方便地管理
  7. 移植性管理?
    maven可以针对不同的开发场景,输出不同种类的输出结果。

2.3 maven的生命周期

maven把项目的构建划分为不同的生命周期(lifecycle),在我看来,划分的已经是非常仔细了,大家可以参考这里?。粗略一点的话,它这个过程(phase)包括:编译、测试、打包、集成测试、验证、部署。maven中所有的执行动作(goal)都需要指明自己在这个过程中的执行位置,然后maven执行的时候,就依照过程的发展依次调用这些goal进行各种处理。

这个也是maven的一个基本调度机制。一般来说,位置稍后的过程都会依赖于之前的过程。当然,maven同样提供了配置文件,可以依照用户要求,跳过某些阶段。

2.4 maven的"约定优于配置"

所谓的"约定优于配置",在maven中并不是完全不可以修改的,他们只是一些配置的默认值而已。但是使用者除非必要,并不需要去修改那些约定内容。maven默认的文件存放结构如下:

读书人网 >开源软件

热点推荐