maven2详细教程

上传人:nt****6 文档编号:47975904 上传时间:2018-07-07 格式:DOC 页数:32 大小:333KB
返回 下载 相关 举报
maven2详细教程_第1页
第1页 / 共32页
maven2详细教程_第2页
第2页 / 共32页
maven2详细教程_第3页
第3页 / 共32页
maven2详细教程_第4页
第4页 / 共32页
maven2详细教程_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《maven2详细教程》由会员分享,可在线阅读,更多相关《maven2详细教程(32页珍藏版)》请在金锄头文库上搜索。

1、Maven 2 详细教程开始之前现代软件开发基于健壮的企业级开源技术,它需要一类新的构建工具和项目协 作工具。Apache Maven 2 的核心引擎旨在简化往往十分复杂的大型协作性软件 项目的构建和管理。在大型项目团队环境中工作是种挑战,而 Maven 2 以友好 为设计目的,即便对那些不熟悉这种挑战的开发人员而言,Maven 2 也足够友 好。本教程首先围绕单个的新手开发展开,然后逐渐介绍 Maven 2 中的一些协 作性的概念和功能。我们鼓励您在本教程提供的介绍之上,探究本文范围之外 的 Maven 2 的一些高级功能。 关于本教程 本教程将循序渐进地向您介绍有关 Maven 2 的基础

2、概念和实践练习,具体内容 包括:Maven 2 概览理解 Maven 2 依赖项管理模型Maven 2 存储库和 Maven 2 坐标Maven 2 生命周期、阶段、插件和 mojo下载和安装 Maven 2实践 Maven 2 您的第一个 Maven 2 项目定制项目对象模型(POM)参与多个项目实践 Maven 2 参与多个项目构建在 Eclipse 3.2 中安装 Maven 2.x Plug-in在 Eclipse 3.2 中使用 Maven 2.x Plug-in读完本教程,您会理解并欣赏 Maven 2 背后的设计理念。也将进一步熟悉在使 用 Maven 2 构建的项目中工作所需的

3、基本技能。这是一张通往 Apache 和 Codehaus 社区中大多数大型项目的通行证。最为重要的是,您将可以把 Maven 2 应用到日常的项目构建和管理活动中。先决条件 您应当大体上熟悉 Java 开发。本教程假设您理解构建工具的价值和基本操作, 包括依赖项管理和输出打包。要求您能将 Eclipse 3.2 用作 IDE,从而在 Eclipse 中使用 Maven 2.x 插件。如果您熟悉大型开源项目(如 Apache 软件 基金会管理下的项目),那就太好了。理解 Java 5 编码(包括泛型)会很有 帮助。如果有各种项目构建技术的经验(如 Ant、autoconf、make 和 nma

4、ke) 也很好,但不做强制性要求。系统需求为继续学习和试验本教程中的代码,您需要有效安装 Suns JDK 1.5.0_09 (或其后的版本)或 IBM JDK 1.5.0 SR3。 针对教程中关于 Eclipse 的 Maven 2.x 的插件部分,需要有效安装 Eclipse 3.2.1 或其后版本。 本教程的推荐系统配置如下: 支持上述 JDK/JRE 的系统,有至少 1GB 的主存有至少 20MB 的磁盘空间来安装软件组件和样例本教程中的说明基于 Microsoft Windows 操作系统。教程中涵盖的所有工具也 可以在 Linux 和 UNIX 系统上运行。Maven 2 概览Ma

5、ven 是一个顶级的 Apache Software Foundation 开源项目,创建它最初是 为了管理 Jakarta Turbine 项目复杂的构建过程。从那以后,不论是开源开发 项目还是私有开发项目都选择 Maven 作为项目构建系统。Maven 快速地发展着, 如今已是第二版,Maven 已经从针对单个复杂项目的定制构建工具成长为广泛 使用的构建管理系统,其丰富的功能可以应用于大多数的软件开发场景。 概括来讲,Maven 2 能够: 理解项目通常是如何构建的。利用其内嵌的项目知识简化和便利项目构建。利用其内嵌的项目知识来帮助用户理解复杂的项目结构和构建过程中潜 在的变数。设计并实现

6、一个经证实的依赖项管理系统,该系统顺应了当今全球化和 相互联系的项目团队的需求。 利用其内部知识,针对简单项目提供简单的用户体验。对于高级用户来说相当灵活;针对特别的应用场景,可以覆盖其内嵌模 型,也可以通过配置、部署元数据或创建自定义插件对其内嵌模型进行 改写。全面扩展现有行为之外的场景细节。捕获新出现的最佳实践和各个用户社区间的经确认的共同性,并将它们 纳入到 Maven 的内嵌项目知识中,从而不断地得到改进。 Maven 2 概念性的概览为捕捉项目构建知识,Maven 2 依赖于一套发展中的有关事物如何运转的概念 性模型。部分模型被硬编码为 Maven 代码库的一部分,这些模型通过新的

7、Maven 发布版本不断得到精炼。图 1 解释了 Maven 2 的关键模型: 图图 1.1. MavenMaven 2 2 对象和操作模型对象和操作模型图 1 中的关键组件为:项目对象模型(项目对象模型(POMPOM):): POM 是 Maven 2 中的里程碑式的模型。该模型 的一部分已经构建到 Maven 引擎(被亲切地称为反应堆 )中,其余部 分则通过一个名叫 pom.xml 的基于 XML 的元数据文件来声明。依赖项管理模型:依赖项管理模型: Maven 对如何管理项目的依赖项很在行。依赖项管理 是一片灰色地带,典型的构建-管理工具和系统都未明确涉及。Maven 2 构建了 Mav

8、en 依赖项管理模型,该模型能够适应大多数需求。这个模型 被证明是有效而高产的模型,目前,主要的开源项目都部署了该模型。构建生命周期和阶段构建生命周期和阶段:和 POM 相关的概念是构建生命周期 和阶段。这 是 Maven 2 的内嵌概念模型和现实物理世界之间的接口。使用 Maven 时,工作主要是通过插件来执行的。在构建周期中,Maven 2 通过遵循 一系列定义好的阶段,将这些插件协调起来。如果您对其中一些概念还有点模糊,请不要担心。接下来的部分会用具体的例 子来巩固这些模型背后的概念。 Maven 2 物理概览图 2 揭示了 Maven 2 的操作方式和与之交互的方式,同时显示了它的物理

9、构 成。图 2 提供了有关如何与 Maven 进行交互的概览: 图图 2.2. MavenMaven 2 2 操作和交互模型操作和交互模型图 2 中,POM 是 Maven 对您的特定项目的理解。这个模型由包含在一系列 pom.xml 文件中的声明性描述构成。这些 pom.xml 文件构成一棵树,每个文件 能从其父文件中继承属性。Maven 2 提供一个 Super POM。这个 Super POM 位 于层级树的顶端,它包含所有项目的默认通用属性;每个项目的 POM 都从这个 Super POM 处继承。 依赖项被指定为 pom.xml 文件的一部分。Maven 根据其依赖项管理模型解析项

10、目依赖项。Maven 2 在本地存储库和全球存储库寻找依赖性组件(在 Maven 术 语里称作工件 )。在远程存储库中解析的工件被下载到本地存储库中,以便使 接下来的访问可以有效进行。Maven 2 中的这个依赖项解析器可以处理可递 依 赖项。即,它能有效地解析您的依赖项所依赖的那些依赖项。 Maven 引擎通过插件 亲自执行几乎所有的文件处理任务。插件被配置和描述在 pom.xml 文件中。依赖项管理系统将插件当作工件来处理,并根据构建任务的 需要来下载插件。每个插件都能和生命周期中的不同阶段联系起来。Maven 引 擎有一个状态机,它运行在生命周期的各个阶段,在必要的时候调用插件。 理解

11、Maven 2 依赖项管理模型在有效利用 Maven 2 之前,您需要理解 Maven 2 依赖项管理模型是如何运行 的。 依赖项开发适应于这样的项目,其软件组件(称作模块 )是由不同的项目团队 开发的。它支持持续独立开发,也支持对所有依赖模块进行精炼。 这个团队协作场景在通过 Internet 建立和维护的开源项目中十分常见,由于 内部开发大受开源或外包世界的冲击和影响,这种场景在合作开发的圈子里日 益盛行。 解析项目依赖项Maven 2 依赖项管理引擎帮助解析构建过程中的项目依赖项。MavenMaven 本地存储库和远程存储库本地存储库和远程存储库 Maven 2 本地存储库是磁盘上的一个

12、目录,通常位于 HomeDirectory/.m2/repository。这个库扮演着高性能本地缓存的角色,存储 着在依赖项解析过程中下载的工件。远程存储库要通过网络访问。可以在 settings.xml 配置文件中维护一个远程存储库列表以备使用。实践中,依赖项在 pom.xml 文件内的 元素中指定,并作为 POM 的一部分注入到 Maven 中。 项目依赖项存储在存储库服务器(在 Maven 术语中简单地称之为存储库 )上。 要成功的解析依赖项,需要从包含该工件的存储库里找到所需的依赖性工件。 通过通过 settings.xmlsettings.xml 配置配置 MavenMaven可以在

13、一个 settings.xml 文件中指定影响 Maven 操作的配置属性。默认的设 置文件是 MavenInstallationDirectory/conf/settings.xml。Maven 2 用户可 通过维护 UserHomeDirectory/.m2/settings.xml 来覆盖一些配置属性。参见 Maven 设置参考,获取更多有关可配置设置的信息。基于 POM 中的项目依赖项信息,该依赖项解析器试图以下列方式解析依赖项:1. 检查本地存储库中的依赖项。 2. 检查远程存储库列表中的依赖项。 3. 如果前两步失败,则报告一个错误。 默认情况下,第二步中所涉及的第一个远程存储库是

14、一个能在全球访问的集中 式 Maven 2 存储库,它包含了最流行的开源项目的一些工件。在内部开发中, 可以设置额外的远程存储库来包含从内部开发模块中发布的工件。可以使用 settings.xml 中的 元素来配置这些额外的远程存储库。 确保单个的工件 将 Maven 2 用于项目构建时,依赖项解析通过一个集中的存储库确保只存在一 个依赖性工件,而不考虑有多少项目或子项目引用该工件。这是多模块项目构 建中一个重要的属性,因为包含多个工件会导致一些项目一致性和集成方面的 问题。 存储库和坐标Maven 2 存储库存储 Maven 在一个项目的依赖项解析中使用过的工件集。在本 地磁盘上访问本地存储

15、库,通过网络访问远程存储库。 工件通常被打包成包含二进制库或可执行库的 JAR 文件。这被认为是工件的一 个类型。但在实践中,工件也可以是 WAR、EAR 或其他代码捆绑类型。 Maven 2 利用操作系统的目录结构对存储在存储库中的工件集进行快速索引。 这个存储库索引系统依赖于这种能力来通过工件的坐标 惟一标识工件。 Maven 坐标 Maven 坐标是一组可以惟一标识工件的三元组值。坐标包含了下列三条信息:组组 IDID:代表制造该工件的实体或组织。例如,com.ibm.devworks 就是 一个组 ID。工件工件 IDID:实际的工件的名称。例如,主体类名为 OpsImp 的项目也许会

16、 用 OpsImp 作为其工件 ID。版本版本:该工件的版本号。支持的格式为 mmm.nnn.bbb-qqqqqqq-dd ,其 中, mmm 是主版本号, nnn 是次版本号, bbb 代表其 bug 修复水平。qqqqq (限定词)或 dd (构建号)也能添加到版本号中,这两项是可 选项。 对 Maven 坐标的使用贯穿于 Maven 配置文件和 POM 文件中。例如,要在命名 为 OpsImp 的模块上指定项目依赖项(在 1.0-SNAPSHOT 级别),pom.xml 文 件应包含清单 1 所示的部分:清单清单 1.1. OpsImpOpsImp 样例模块的样例模块的 MavenMaven 坐标坐标 com.ibm.devworkscom.ibm.devworksOpsImpOpsImp1.0-SNAPSHOT1.0-SNAPSHOT特别限定词 SNAPSHOT 告诉 Maven 2:该项目或模块还处于开发状态中,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号