Apache Maven 2 简介
现代软件项目不再是单个本地团队独立开发的产物。随着健壮的企业级开源组件的可用性日益提高,当今的软件项目需要项目团队间的动态协作,往往也需要混合使用在全球范围内创建和维护的组件。如今,Apache Maven 构建系统步入了第二代,它和由 Internet 带来的全球软件开发时代之前所创建的那些遗留构建工具不同,它完全是重新设计的,以应对这些现代的挑战。本教程将带您从头领略 Maven 2。
开始之前
现代软件开发基于健壮的企业级开源技术,它需要一类新的构建工具和项目协作工具。Apache Maven 2 的核心引擎旨在简化往往十分复杂的大型协作性软件项目的构建和管理。在大型项目团队环境中工作是种挑战,而 Maven 2 以友好为设计目的,即便对那些不熟悉这种挑战的开发人员而言,Maven 2 也足够友好。本教程首先围绕单个的新手开发展开,然后逐渐介绍 Maven 2 中的一些协作性的概念和功能。我们鼓励您在本教程提供的介绍之上,探究本文范围之外的 Maven 2 的一些高级功能。
关于本教程
本教程将循序渐进地向您介绍有关 Maven 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 构建的项目中工作所需的基本技能。这是一张通往 Apache 和 Codehaus 社区中大多数大型项目的通行证。最为重要的是,您将可以把 Maven 2 应用到日常的项目构建和管理活动中。
先决条件
您应当大体上熟悉 Java™ 开发。本教程假设您理解构建工具的价值和基本操作,包括依赖项管理和输出打包。要求您能将 Eclipse 3.2 用作 IDE,从而在 Eclipse 中使用 Maven 2.x 插件。如果您熟悉大型开源项目(如 Apache 软件基金会管理下的项目),那就太好了。理解 Java 5 编码(包括泛型)会很有帮助。如果有各种项目构建技术的经验(如 Ant、autoconf、make 和 nmake)也很好,但不做强制性要求。
系统需求
为继续学习和试验本教程中的代码,您需要有效安装 Sun's 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 概览
Maven 是一个顶级的 Apache Software Foundation 开源项目,创建它最初是为了管理 Jakarta Turbine 项目复杂的构建过程。从那以后,不论是开源开发项目还是私有开发项目都选择 Maven 作为项目构建系统。Maven 快速地发展着,如今已是第二版,Maven 已经从针对单个复杂项目的定制构建工具成长为广泛使用的构建管理系统,其丰富的功能可以应用于大多数的软件开发场景。
概括来讲,Maven 2 能够:
- 理解项目通常是如何构建的。
- 利用其内嵌的项目知识简化和便利项目构建。
- 利用其内嵌的项目知识来帮助用户理解复杂的项目结构和构建过程中潜在的变数。
- 设计并实现一个经证实的依赖项管理系统,该系统顺应了当今全球化和相互联系的项目团队的需求。
- 利用其内部知识,针对简单项目提供简单的用户体验。
- 对于高级用户来说相当灵活;针对特别的应用场景,可以覆盖其内嵌模型,也可以通过配置、部署元数据或创建自定义插件对其内嵌模型进行改写。
- 全面扩展现有行为之外的场景细节。
- 捕获新出现的最佳实践和各个用户社区间的经确认的共同性,并将它们纳入到 Maven 的内嵌项目知识中,从而不断地得到改进。
Maven 2 —— 概念性的概览
为捕捉项目构建知识,Maven 2 依赖于一套发展中的有关事物如何运转的概念性模型。部分模型被硬编码为 Maven 代码库的一部分,这些模型通过新的 Maven 发布版本不断得到精炼。图 1 解释了 Maven 2 的关键模型:
图 1. Maven 2 对象和操作模型
图 1 中的关键组件为:
- 项目对象模型(POM): POM 是 Maven 2 中的里程碑式的模型。该模型的一部分已经构建到 Maven 引擎(被亲切地称为反应堆 )中,其余部分则通过一个名叫 pom.xml 的基于 XML 的元数据文件来声明。
- 依赖项管理模型: Maven 对如何管理项目的依赖项很在行。依赖项管理是一片灰色地带,典型的构建-管理工具和系统都未明确涉及。Maven 2 构建了 Maven 依赖项管理模型,该模型能够适应大多数需求。这个模型被证明是有效而高产的模型,目前,主要的开源项目都部署了该模型。
- 构建生命周期和阶段:和 POM 相关的概念是构建生命周期 和阶段。这是 Maven 2 的内嵌概念模型和现实物理世界之间的接口。使用 Maven 时,工作主要是通过插件来执行的。在构建周期中,Maven 2 通过遵循一系列定义好的阶段,将这些插件协调起来。
如果您对其中一些概念还有点模糊,请不要担心。接下来的部分会用具体的例子来巩固这些模型背后的概念。
Maven 2 —— 物理概览
图 2 揭示了 Maven 2 的操作方式和与之交互的方式,同时显示了它的物理构成。图 2 提供了有关如何与 Maven 进行交互的概览:
图 2. Maven 2 操作和交互模型
图 2 中,POM 是 Maven 对您的特定项目的理解。这个模型由包含在一系列 pom.xml 文件中的声明性描述构成。这些 pom.xml 文件构成一棵树,每个文件能从其父文件中继承属性。Maven 2 提供一个 Super POM。这个 Super POM 位于层级树的顶端,它包含所有项目的默认通用属性;每个项目的 POM 都从这个 Super POM 处继承。
分享到:
相关推荐
本教程将详细介绍如何在RAD 7.5中集成Maven的M2Eclipse插件,以提高开发效率和项目的可维护性。 首先,我们需要了解M2Eclipse插件的基本概念。M2Eclipse是Eclipse的扩展,它允许用户在Eclipse环境中直接使用Maven的...
3. 依赖项管理:在开发环境中,需要在项目的构建文件中配置对IBM MQ客户端库以及其他相关依赖的依赖项,例如使用Maven作为构建工具时,会在pom.xml文件中添加依赖项声明。 4. 配置文件:配置文件中需要指定连接到...
2. 依赖管理:Maven通过中央仓库的概念,使得项目依赖的管理变得简单,开发者只需要在pom.xml中声明所需依赖的坐标(groupId、artifactId、version),Maven将自动下载这些依赖到本地仓库。 3. 标准化构建过程:...
本教程中的“IBM教程”很可能会包含以下内容: 1. **环境配置**:如何设置Spring 2.0和JPA的开发环境,包括Maven或Gradle的依赖配置。 2. **实体类定义**:如何使用JPA的@Entity注解创建持久化对象,并用@Column、@...
可以通过管理控制台或使用Ant、Maven等构建工具自动部署。部署过程包括应用的安装、启动、停止和卸载。 5. 集成与互操作性: WebSphere支持与其他IBM产品如DB2数据库、Tivoli安全管理、MQ消息中间件等的集成,也...
例如,Mylyn用于任务管理,PDE支持插件开发,m2e将Maven集成到Eclipse中。 **4. 跨平台支持** Eclipse可以在Windows、Linux、macOS等多种操作系统上运行,为不同平台的开发者提供一致的开发体验。 **5. 社区支持与...
8. **案例分析**:"Eclipse应用实践教程:教程例(1)"和"教程例(2)"这两个文件很可能是教程中的实例项目,读者可以通过实际操作这些例子,加深对Eclipse各项功能的理解。 9. **学习路径**:对于初学者,可以从创建...
WebSphere v7.0 集成了Ant和Maven等构建工具,便于实现持续集成和自动化部署。 九、与其他IBM产品集成 WebSphere 可以无缝集成IBM的其他产品,如DB2数据库、Tivoli管理工具和 Rational 开发工具,构建完整的IT解决...
【标题】"WebSphere使用教程"是一份详细指导如何操作和管理IBM的WebSphere应用服务器的教程资源。WebSphere作为企业级的Java应用程序部署平台,是许多企业和开发者的首选工具,因为它提供了强大的功能和高度可扩展性...
Eclipse起源于2001年,最初由IBM开发,现在由Eclipse基金会维护。它不仅支持Java,还通过插件机制支持C/C++、Python、PHP等多种语言。Eclipse的开放源代码特性使得全球开发者能够贡献和定制功能,形成了庞大的生态...
### IntelliJ IDEA 13 基础教程知识点总结 #### 安装配置 - **初始配置**:在安装完成后,IntelliJ IDEA 13 会引导用户进行初始配置。主要包括: - 是否导入旧版本的设置:系统会提示用户是否从上一个版本 (`C:\...
本教程将详细讲解如何使用Mybatis连接DB2数据库并进行逆向工程,生成Java实体类、Mapper接口和XML映射文件。 首先,我们了解逆向工程(Reverse Engineering)的概念。在数据库开发中,逆向工程是指从现有的数据库...
- **JSF**:除了 Spring MVC 和 Struts 2 外,AppFuse 还支持 JSF 框架,提供了相关的文档和教程。 4. **安全性**: - **安全框架集成**:AppFuse 支持多种安全框架的集成,如 Spring Security 等。 - **认证与...
1. **Eclipse 的基本概念**:Eclipse是一个开放源代码的软件开发平台,最初由IBM开发,现在由Eclipse基金会维护。它提供了一个可扩展的框架,支持多种编程语言,包括Java、C++、Python等。 2. **安装与配置**:...
Eclipse最初由IBM公司开发,后来成为了一个社区驱动的项目。它支持多种编程语言,包括Java、C++、Python等,通过插件机制可以扩展其功能。 2. **Eclipse的主要功能**: - **代码编辑**:提供语法高亮、自动补全、...
2. **安装与配置**:教程将详细讲解如何下载、安装Eclipse IDE,以及如何根据个人需求进行基本的系统配置,如设置JDK路径、修改工作空间等。 3. **界面介绍**:介绍Eclipse的工作界面,包括透视图(Perspective)、...