`
lincan
  • 浏览: 3102 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用Maven进行项目管理 1 - 基本概念

阅读更多
本文介绍Maven的基本概念,在下一篇博文使用Maven进行项目管理 2 - 用Maven管理最简单的Java项目中,我们将应用Maven工具和Maven的构建思想管理一个最简单的Java项目。

什么是Maven

Maven的官方网站上是这样定义的

引用
At first glance Maven can appear to be many things, but in a nutshell Maven is an attempt to apply patterns to a project's build infrastructure in order to promote comprehension and productivity by providing a clear path in the use of best practices.


意思是乍一看Maven包含很多内容,但是本质上,Maven就是用于项目构建的一组模式。

从这个定义出发,什么是Maven可以总结为三点

  1. Maven是用于项目构建的: Maven的用途是项目构建,也就是用于管理编译/测试/发布/部署等一系列项目管理任务的。
  2. Maven的本质是一套项目构建模式: 这是Maven背后的方法论,这里的模式和编程语言中的设计模式有一些区别,可以理解为完成一件事情的方法,通常是指“Best Practice”,完成一件任务的最佳方法。
  3. Maven的表现是一套工具: 我们从Maven官方网站上下载的是Maven程序,这是Maven的表现形式,一个用于项目构建的程序。通过简单的Maven命令,即可按照Maven所推崇的项目构建模式进行工作。但是我们应该注意,熟悉工具是简单的,更重要的是理解其背后的方法论。

什么是POM

POM是Project Object Model的缩写,意思是项目对象模型,说白了就是一个描述项目信息的XML文件。比如我创建了一个项目,叫my-app,则my-app文件夹下有个pom.xml,就是这里的POM了。

Maven工具需要的所有信息均从该文件获取,该文件描述了很多信息,从项目的基本信息,例如项目名称、版本等,到项目依赖关系、插件配置,均通过该文件进行描述。

这里的pom.xml和我们创建一个README.txt放在项目根目录下并没有本质区别,但是POM提供了一种标准的、结构化的项目信息描述方式,并可以被Maven程序所使用。

插件 (Plugin)

Plugin指Maven插件,Maven本身可以认为是一个执行框架,即Maven本身并不具备任何实际的功能,所有的功能均通过插件来完成。

例如,我们通过Maven命令来创建一个新项目

mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app


这里的archetype即是插件名称,我们可以把插件看做是一组任务 (Goal) 的集合,例如archetype插件包含以下任务

  • archetype:create
  • archetype:generate
  • archetype:create-from-project
  • archetype:crawl

任务 (Goal)

Goal指Maven任务,即完成某个具体的工作。例如archetype:create就是任务名称,指从某个原型 (项目模版)创建一个新的项目。

阶段 (Phase)

我们在使用Maven时,如果要对项目打包,会使用以下命令

mvn package


这里package和archetype:create这样的形式有所不同。这里的package就是Maven中的阶段 (Phase)。在项目管理中,我们会经常提到编码阶段、测试阶段、部署阶段等等,对,Maven中阶段(Phase)的概念和这里是差不多的。

阶段(Phase)和任务(Goal)主要有两个区别

粒度不同

阶段(Phase)粒度更大,可以认为一个阶段(Phase)对应一组任务(Goal),例如mvn package会依序执行以下任务

  • resources:resources
  • compiler:compile
  • resources:testResources
  • compiler:testCompile
  • surefire:test
  • jar:jar

独立性不同

阶段(Phase)之间存在依赖关系,每一个阶段(Phase)都是生命周期中的一个环节,执行任何一个阶段(Phase)需要先执行其前置的阶段(Phase)。这点很好理解,就像我们不可能不经过编码阶段就进入测试阶段。而任务(Goal)是独立的,每个任务是可以单独执行的,与其他任务无关。

生命周期 (Lifecycle)

生命周期 (Lifecycle) 和软件开发的生命周期类似,在Maven中,生命周期 (Lifecycle)由一组有序的阶段 (Phase)构成。其中任何一个阶段(Phase)的执行,需要先执行其前置阶段。

小结

  • Maven是一套项目构建思想 + 实用程序构成
  • 通过项目对象模型(POM)描述项目元信息
  • Maven程序本身只是一套插件(Plugin)执行框架,具体功能通过插件(Plugin)完成,插件(Plugin)由一组任务(Goal)构成
  • Maven把项目构建过程看做一个生命周期(Lifecycle),生命周期由若干阶段(Phase)构成,阶段(Phase)必须顺序执行
2
0
分享到:
评论

相关推荐

    apache-maven-3.2.5-bin

    一、Maven的基本概念  Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。 1.1、项目构建  项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试...

    maven window下安装包

    第13章:使用Maven生成项目原型/13.1 Maven项目原型/13.1.1 概念 第13章:使用Maven生成项目原型/13.1 Maven项目原型/13.1.2 项目原型分类 第13章:使用Maven生成项目原型/13.1 Maven项目原型/13.1.3 命令行生成默认...

    用Maven做项目构建

    读完本文,您将了解Maven的基本概念和使用它进行项目构建的基本方法。本文将介绍基于ApacheMaven3的项目构建的基本概念和方法。Maven是一套标准的项目构建和管理工具,使用统一规范的脚本进行项目构建,简单易用,...

    Maven介绍安装和配置详解

    Maven是一个自动化构建工具,主要用于Java项目的构建和管理。它使用一种基于项目对象模型(POM)的概念,使得开发者...5. **集成工具**:许多IDE和构建工具都支持Maven,使得开发者可以方便地使用Maven进行项目管理。

    Maven功能介绍以及安装配置详解

    Maven是一个自动化构建工具,主要用于Java项目的构建和管理。它使用一种基于项目对象模型(POM)的概念,使得开发者能够使用...集成工具:许多IDE和构建工具都支持Maven,使得开发者可以方便地使用Maven进行项目管理。

    第三课:Maven基本概念与核心配置 (1)(1)1

    2、maven 编译maven 编译过程演示创建maven项目 5、maven 依赖管理 在pom 文件中添加junit 依赖修改测试类,加入junit 代码执

    Maven实战.pdf

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    Maven实战 许晓斌 著

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    《Maven实战》

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    Maven实战 高清版

    Maven——这一Java社区事实标准的项目管理工具,能帮你从琐碎的手工劳动中解脱出来,帮你规范整个组织的构建系统。不仅如此,它还有依赖管理、自动生成项目站点等超酷的特性,已经有无数的开源项目使用它来构建项目...

    Maven实战 高清版pdf

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    maven 教程

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    基于maven项目的SSM框架与layu前端框架的代码

    Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级...

    Maven配置文档

    Maven进行测试、使用Hudson进行持续集成、使用 Maven构建 Web应用、Maven的版本管理、Maven的灵活构 建、生成项目站点和 Maven的 m2eclipse插件等实用性较强的高级知识,读者可有选择性的阅读;扩展性地讲解 了如何 ...

    Maven面试题及其答案

    POM是Maven项目的核心文件,它是Project Object Model(项目对象模型)的缩写。POM以XML格式编写,POM文件包含了项目的基本信息; 4、什么是坐标? 坐标是在Maven中用于唯一标识一个项目或依赖项的信息。它由三个...

    基于SSH2+Maven+EasyUI+MySQL技术实战开发易买网电子商务交易平台

    Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目,而使用 Ant 则需要十几行。事实上...

Global site tag (gtag.js) - Google Analytics