转载地址:http://www.cnblogs.com/itech/archive/2011/11/01/2231837.html

Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。Maven除了具备Ant的功能外,还增加了以下主要的功能:

1)使用Project Object Model来对软件项目管理;

2)内置了更多的隐式规则,使得构建文件更加简单;

3)内置依赖管理和Repository来实现依赖的管理和统一存储;

4)内置了软件构建的生命周期;

一 POM(Project Object Model)与项目管理

每一个Maven工程都包含一个pom.xml文件,其他存储了该工程相关的信息,从而达到一定的项目管理的功能。例如包含了工程的配置,缺陷跟踪系统信息,工程的组织,许可协议,工程的路径,依赖等信息。

典型的pom.xml如下:

<project … >
<modelVersion>4.0.0</modelVersion>

<!-- The Basics -->
<groupId>...</groupId>
< artifactId>...</artifactId>
< version>...</version>
< packaging>...</packaging>
< dependencies>...</dependencies>
< parent>...</parent>
< dependencyManagement>...</dependencyManagement>
< modules>...</modules>
< properties>...</properties>

<!-- Build Settings -->
<build>...</build>
< reporting>...</reporting>

<!-- Project Meta Data -->
<name>...</name>
< description>...</description>
< url>...</url>
< inceptionYear>...</inceptionYear>

< licenses>...</licenses>
< organization>...</organization>

<developers>...</developers>
< contributors>...</contributors>

<!-- Environment -->
<issueManagement>...</issueManagement>
< ciManagement>...</ciManagement>
< mailingLists>...</mailingLists>
< scm>...</scm>
< prerequisites>...</prerequisites>
< repositories>...</repositories>
< pluginRepositories>...</pluginRepositories>
< distributionManagement>...</distributionManagement>
< profiles>...</profiles>
< /project>

二 隐形的规则和简单的构建文件

Maven工程的目录结构必须为如下的结构

Maven还有内置的构建生命周期,内置定义了build,test,package,deploy等task。

由于Maven工程目录的规则和内置的构建生命周期,从而使得构建文件简单,例如如下的构建文件中甚至没有出现build,package等task的定义,但是我们已经可以调用wvm package等内置的task了:

<project xmlns="http://maven.apache.org/POM/4.0.0"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0                       http://maven.apache.org/xsd/maven-4.0.0.xsd">   <modelVersion>4.0.0</modelVersion>   <groupId>com.mycompany.app</groupId>   <artifactId>my-app</artifactId>   <packaging>jar</packaging>   <version>1.0-SNAPSHOT</version>   <name>Maven Quick Start Archetype</name>   <url>http://maven.apache.org</url>   <dependencies>     <dependency>       <groupId>junit</groupId>       <artifactId>junit</artifactId>       <version>3.8.1</version>       <scope>test</scope>     </dependency>   </dependencies> </project>

三 依赖管理和Repository

Maven的dependence management用来管理所有此project的dependences,且在dependence repository中自动查找和下载dependence。

1) 依赖管理

例如工程以来MySQL如下:

<dependencyManagement>
< dependencies>
< dependency>
< groupId>mysql</groupId>
< artifactId>mysql-connector-java</artifactId>
< version>5.1.2</version>
< /dependency>
< dependencies>
< /dependencyManagement>

<dependency>
< groupId>mysql</groupId>
< artifactId>mysql-connector-java</artifactId>
< /dependency>

2)dependence repository

更好的办法是公司或每个team有自己的repository,例如下图:

四 构建生命周期的定义

构建生命周期显式地定义了构建,测试,和发布的过程,是每个Maven工程的核心。Maven包含了3个内置的生命周期:default,clean和site。

1)default生命周期处理了工程的编译,测试和部署,他一共包含20多个阶段,主要的阶段如下:

Validate: 验证所有的工程信息是否可用且正确

Compile: 编译源代码

Test: 在一套framework下运行但愿测试

Package: 以发布的格式打包编译的代码

Integration-test: 在集成测试环境中处理(部署)发布包

Verify: 检测发布包是否正确可用
Install: 在本地的repository上安装发布包
Deploy: 在远程的repository上安装发布包

以上的阶段具有先后顺序,执行某个阶段时,此阶段前的所有阶段都会被自动地执行。

2)clean生命周期处理工程的清理工作,包含3个阶段:pre-clean, clean, post-clean。

3)site生命周期处理工程site文档的生成和部署,包含下列阶段:

pre-site, site, post-site 和site-deploy,其中site-deploy用来将site文档部署到指定的web server上。

Maven简介的更多相关文章

  1. maven 简介

    本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与我交流任何关于本书的问题和关于Ma ...

  2. 学习笔记-[Maven实战]-第一章:Maven简介

    Maven简介: Maven 可翻译为:知识的积累,也可以翻译为"专家"或"内行". Maven 是一个跨平台的项目管理工具,是Apache组织中一个很成功的开 ...

  3. maven简介及基础使用

    一.Maven简介 Maven可译为"知识的积累"."专家",主要服务于基于Java平台的项目构建.依赖管理和项目信息管理. 1.Maven-项目构建工具    ...

  4. (一)《Maven实战》读书笔记 —— Maven简介

    第一章:Maven简介 一.何为Maven? Maven这个词可以翻译为"知识的积累",本书将介绍Maven这一跨平台的项目管理工具.作为Apache组织中的一个个颇为成功的开源项 ...

  5. Maven简介(一)

    在现实的企业中,以低成本.高效率.高质量的完成项目,不仅仅需要技术大牛,企业更加需要管理大牛,管理者只懂技术是远远不够的.当然,管理可以说有很多的方面,例如:对人员的管理,也有对项目的管理等等.如果你 ...

  6. Maven简介(Maven是什么)

    简介 Maven,在意第绪语中意为对知识的积累.Maven最初用来在Jakarta Turbine项目中简化该项目的构建过程.Jakarta Trubine项目有多个工程,每个工程都有自己的多个Ant ...

  7. 取代Ant——Maven简介

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6625724.html  一:目前开发存在的问题 在没有Maven之前,我们开发一个项目,需要自行导入各种不同的 ...

  8. Maven简介(五)——pom.xml

    6       Maven的pom.xml介绍 6.1     简介 pom.xml文件是Maven进行工作的主要配置文件.在这个文件中我们可以配置Maven项目的groupId.artifactId ...

  9. [JavaEE] Maven简介

    转载自:百度 http://baike.baidu.com/view/336103.htm?fr=aladdin 一.简介 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构 ...

  10. Maven简介(三)——profile介绍

    profile介绍 4.1     profile简介 profile可以让我们定义一系列的配置信息,然后指定其激活条件.这样我们就可以定义多个profile,然后每个profile对应不同的激活条件 ...

随机推荐

  1. GNUPLOT画图工具

    http://blog.csdn.net/codingkid/article/details/7211492 不得不说这个工具实在是太强大了. 1.首先命令简单,不会有那么多的语法问题. 2.其次画图 ...

  2. Ognl基本使用

    ---恢复内容开始--- Ognl默认是从“根”中取数据的 下面Demo中用的是 Ognl.getValue(String expression, Map context, Object root) ...

  3. 笔记:PHP查询mysql数据后中文字符乱码

    新建表Clubs CREATE TABLE `Clubs` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) CHARACTER SET utf8 NOT NULL ...

  4. textView中判断文本长度,自定义表情长度为1,emoj表情长度为1,输入限制

      static const int MAX_LIMIT_NUMS = 100; /**< 输入个数限制 */ // self.inputNumberTipsLabel 控制器的view上一个用 ...

  5. Android SDK安装Android4.0“冰激淋三明治”(IceCreamSandwich)教程(转载)

    昨天,Google举行了发布会,发布了Nexus Prime手机和Android4.0-IceCreamSandwich手机系统.作为Google旗下Android的最新版本手机系 统,Android ...

  6. ES+Hbase对接方案概述

    方案背景 Hbase的索引方案有很多,越来越多的人开始选择ES+Hbase的方案,其实该方案并没有想象中那么完美,ES并发低,同时查询速度相对Hbase也慢很多,那为什么会选择他呢,它的写入比较快,如 ...

  7. 不使用配置文件动态注册HttpModule

    在asp.net 4.0中,提供了一种不通过修改配置文件注册Module的方法.从.net3.5开始,新提供的PreApplicationStartMethodAttribute特性可以应用在程序集上 ...

  8. Tools下的mdscongiguer 文件中 43行 oracle 配置 发现需要连接库 -lclntsh libclntsh.so 库是个什么东西呢?

    Tools下的mdscongiguer     文件中 43行  oracle 配置      发现需要连接库 -lclntsh      libclntsh.so 库是个什么东西呢? 分想一个知乎网 ...

  9. liunx几台机器直接用ssh链接

    1,查看ip sudo ifconfig 2,查看是否安装了ssh server服务 ps -ef |grep ssh  或者ps -aux |grep ssh 看一下里面有没有sshd.如果没有表示 ...

  10. Marriage Ceremonies(状态压缩dp)

     Marriage Ceremonies Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...