​1.Maven-简介​ 2.Maven-安装和配置​ 3.Maven-POM文件说明​ 4.Maven-坐标​ 5.Maven-依赖详解​  6.Maven-仓库​ 7.Maven-生命周期和插件​  8.Maven-聚合​ 9.Maven-继承和反应堆​ 10.Maven-使用NEXUS创建私服​   11.Mavne-配置从NEXUS下载构件和为项目配置独立仓库​   12.Maven-使用Hudson进行持续集成及系统配置​  13.Maven-创建Hudson任务​  14.Maven-Hudson监视任务、用户管理、工作目录


7 Maven-生命周期和插件


7.1.1 Maven生命周期

1)就是为了对所有的构件过程进行抽象和统一。这个生命周期包含了项目的清理、初始化、编译、测试、打包、集成测试、验 证、部署和站点生成等几乎所有构件步骤。

2)Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,实际的任务都交由插件来完成。

3)Maven的生命周期抽象了构建的各个步骤,定义了它们的次序,但没有提供具体实现。


7.1.2 Maven生命周期详解

     Maven拥有三套相互独立的生命周期,它们分别为clean、default和site。


     --clean的生命周期的目的是清理项目。

          pre-clean 执行一些清理前需要完成的工作。

          clean 清理上一次构建生成的文件

          post-clean 执行一些清理后需要完成的工作。


     --default生命周期的目的是构建项目。

          它定义了真正构建时所需要执行的所有步骤,它是所有生命周期中最核心的部分。

           validate,initialize,

           generate-sources,

           process-sources,

           generate-resources,

           process-resources,

           compile,

           process-classes,

           generate-test-sources,

           process-test-sources,

           generate-test-resources,

           process-test-resources,

           test-compile,

           process-test-classes,

           test,

           prepare-package,

           package,

           pre-integration-test,

           integration-test,

           post-integration-test,

           verify,

           install,

           deploy

      --site生命周期的目的是建立项目站点。

          pre-site 执行一些在生成项目站点之前需要完成的工作

          site 生成项目站点文档

          post-site 执行一些在生成项目站点之后需要完成的工作

          site-deploy 将生成的项目站点发布到服务器上。


      每个生命周期都包含一些阶段(phase),这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段,用户和Maven最直接的交


互方式就是调用这些生命周期的阶段。


7.2 插件
7.2.1 插件目标

Maven的核心仅仅定义了抽象的生命周期,具体的任务时交由插件完成的,插件以独立的构件形势存在,因此,Maven核心的分发包只有不到3MB的大小,Maven会在需要的时候下载并使用插件。


7.2.2 插件绑定

Maven的生命周期与插件相互绑定,用以完成实际的构建任务。具体而言,是生命周期的阶段与插件的目标项目绑定,以完成某个具体的构建任务。


7.2.3 内置绑定

为了让用户几乎不用任务配置就能够构建Maven项目,Mavne在核心为一些主要的生命周期阶段绑定了很多插件的目标,当用户通过命令调用生命周期阶段的时候,对应的插件目标就会执行相应的任务。如下图:

7 Maven-生命周期和插件_maven



7 Maven-生命周期和插件_maven插件用法_02


相对于clean和site生命周期来说,default生命周期与插件目标绑定关系就显得负责一些。由于项目的打包类型会影响构建的具体过程,因此default生命周期阶段与插件目标绑定关系由打包类型所决定,打包类型是通过POM中的packaging元素定义的。如下图:

7 Maven-生命周期和插件_maven插件_03

除了默认的打包类型jar外,常见的打包类型还有 war、pom、maven-piugin、ear等。他们的default生命周期与插件目标的绑定关系可参阅Maven官方文档。

7.2.4 自定义绑定

除了内置绑定以外,用户还能够自己选择将某个插件目标绑定到生命周期的某个阶段上,这样的自定义绑定方式能让Maven项目在构建过程中执行更多更丰富的任务。如下图:

7 Maven-生命周期和插件_maven生命周期_04

上图中就绑定了一个mybatis相关的插件,它用于生成 model,dao,mapper等文件的。


备注:当插件目标被绑定到不同的生命周期阶段的时候,其执行顺序会由生命周期阶段的先后顺序决定。如果多个目标被绑定到同一个阶段,他们的执行顺序会按照插件声明的先后顺序执行。