9 Maven 构建生命周期

构建生命周期阶段的目标是执行顺序是一个良好定义的序列。
这里使用一个例子,一个典型的 Maven 构建生命周期是由下列顺序的阶段:

阶段 处理 描述
准备资源 资源复制 资源复制可以进行定制
编译 执行编译 源代码编译在此阶段完成
包装 打包 创建JAR/WAR包如在 pom.xml 中定义提及的包
安装 安装 这一阶段在本地/远程Maven仓库安装程序包
  • Maven有以下三种标准的生命周期:

1: clean
2: default(或 build)
3: site

目标代表一个特定的任务,它有助于项目的建设和管理。可以被绑定到零个或多个生成阶段。一个没有绑定到任何构建阶段的目标,它的构建生命周期可以直接调用执行。
执行的顺序取决于目标和构建阶段折调用顺序。例如,考虑下面的命令。清理和打包(mvn clean)参数的构建阶段,而 dependency:copy-dependencies package 是一个目标。

mvn clean dependency:copy-dependencies package

在这里,清洁的阶段,将首先执行,然后是依赖关系:复制依赖性的目标将被执行,并终于将执行包阶段。

  • 清洁生命周期

当我们执行命令 mvn clean 命令后,Maven 调用清洁的生命周期由以下几个阶段组成:

  • 1:pre-clean
  • 2:clean
  • 3:post-clean

Maven 清洁目标(clean:clean)被绑定清洁干净的生命周期阶段。clean:clean 目标删除 build 目录下的构建输出。因此,当 mvn clean 命令执行时,Maven会删除编译目录。

目标清洁生命周期在上述阶段,我们可以自定义此行为。
在下面的示例中,我们将附加 maven-antrun-plugin:run 对目标进行预清洁,清洁和清洁后这三个阶段。这将使我们能够调用的信息显示清理生命周期的各个阶段。
现在来创建了一个 pom.xml 文件在 E:\WorkSpace\Study\MavenClean 项目文件夹中,具体内容如下:


4.0.0
com.gp6
MavenClean
1.0


   
   org.apache.maven.plugins
   maven-antrun-plugin
   1.1
   
      
         id.pre-clean
         pre-clean
         
            run
         
         
            
               pre-clean phase
            
         
      
      
         id.clean
         clean
         
          run
         
         
            
               clean phase
            
         
      
      
         id.post-clean
         post-clean
         
            run
         
         
            
               post-clean phase
            
         
      
   
   



现在,打开命令控制台,到该文件夹包含 pom.xml 并执行以下 mvn 命令。

E:\WorkSpace\Study\MavenClean>mvn post-clean

Maven将开始处理并显示清理生命周期的所有阶段。

Downloaded: http://114.215.137.201:8090/nexus/content/groups/public/org/codehaus
/plexus/plexus-utils/1.0.5/plexus-utils-1.0.5.jar (165 KB at 4.1 KB/sec)
[INFO] Executing tasks
     [echo] pre-clean phase
[INFO] Executed tasks
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ MavenClean ---
[INFO]
[INFO] --- maven-antrun-plugin:1.1:run (id.clean) @ MavenClean ---
[INFO] Executing tasks
     [echo] clean phase
[INFO] Executed tasks
[INFO]
[INFO] --- maven-antrun-plugin:1.1:run (id.post-clean) @ MavenClean ---
[INFO] Executing tasks
     [echo] post-clean phase
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:03 min
[INFO] Finished at: 2017-05-04T11:00:55+08:00
[INFO] Final Memory: 7M/122M
[INFO] ------------------------------------------------------------------------
默认(或生成)生命周期

这是 Maven 主要的生命周期,用于构建应用程序。它有以下 23 个阶段。

|生命周期阶段| 描述|
|:----:|:----:|:----:|
|validate| 验证项目是否正确,并且所有必要的信息可用于完成构建过程|
|initialize |建立初始化状态,例如设置属性|
|generate-sources| 产生任何的源代码包含在编译阶段|
|process-sources |处理源代码,例如,过滤器值|
|generate-resources |包含在包中产生的资源|
|process-resources |复制和处理资源到目标目录,准备打包阶段|
|compile |编译该项目的源代码|
|process-classes |从编译生成的文件提交处理,例如:Java类的字节码增强/优化|
|generate-test-sources| 生成任何测试的源代码包含在编译阶段|
|process-test-sources| 处理测试源代码,例如,过滤器任何值|
|test-compile |编译测试源代码到测试目标目录|
|process-test-classes| 处理测试代码文件编译生成的文件|
|test |运行测试使用合适的单元测试框架(JUnit)|
|prepare-package |执行必要的任何操作的实际打包之前准备一个包|
|package |提取编译后的代码,并在其分发格式打包,如JAR,WAR或EAR文件|
|pre-integration-test| 完成执行集成测试之前所需操作。例如,设置所需的环境|
|integration-test| 处理并在必要时部署软件包到集成测试可以运行的环境|
|pre-integration-test| 完成集成测试已全部执行后所需操作。例如,清理环境|
|verify |运行任何检查,验证包是有效的,符合质量审核规定|
|install |将包安装到本地存储库,它可以用作当地其他项目的依赖|
|deploy |复制最终的包到远程仓库与其他开发者和项目共享|

有涉及到Maven 生命周期值得一提几个重要概念:
  • 当一个阶段是通过 Maven命令调用,例如:mvn compile,只有阶段到达并包括这个阶段才会被执行。

  • 不同的 Maven 目标绑定到 Maven生命周期的不同阶段这是这取决于包类型(JAR/WAR/EAR)。

在下面的示例中,将附加 Maven 的 antrun 插件:运行目标构建生命周期的几个阶段。这将使我们能够回显的信息显示生命周期的各个阶段。
在 E:\WorkSpace\Study\MavenAnturn 项目文件夹中放入 pom.xml 文件。


4.0.0
com.gp6
Maven
1.0



org.apache.maven.plugins
maven-antrun-plugin
1.1

   
      id.validate
      validate
      
         run       
      
         
            validate phase
         
      
   
   
      id.compile
      compile
      
         run
      
      
         
            compile phase
         
      
   
   
      id.test
      test
      
         run
      
      
         
            test phase
         
      
   
   
         id.package
         package
         
            run
         
         
         
            package phase
         
      
   
   
      id.deploy
      deploy
      
         run
      
      
      
         deploy phase
      
      
   





现在,打开命令控制台,进入包含 pom.xml 并执行以下 mvn 命令。

E:\WorkSpace\Study\MavenAnturn>>mvn compile

编译阶段,Maven 将开始构建生命周期的阶段处理并显示。

[INFO] Executed tasks
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ MavenAntur
n ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e
. build is platform dependent!
[INFO] skip non existing resourceDirectory E:\WorkSpace\Study\MavenAnturn\src\ma
in\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ Maven ---

[INFO] No sources to compile
[INFO]
[INFO] --- maven-antrun-plugin:1.1:run (id.compile) @ Maven ---
[INFO] Executing tasks
     [echo] compile phase
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.817 s
[INFO] Finished at: 2017-05-04T11:26:59+08:00
[INFO] Final Memory: 9M/217M
[INFO] ------------------------------------------------------------------------
网站的生命周期

Maven的网站插件通常用于创建新的文档,创建报告,部署网站等。
阶段
1 :pre-site
2 :site
3 :post-site
4 :site-deploy

在下面的示例中,我们将附加 maven-antrun-plugin:run 目标网站的生命周期的所有阶段。这将使我们能够调用短信显示的生命周期的各个阶段。
现在更新 pom.xml 文件在 E:\WorkSpace\Study\MavenAnturn 项目文件夹中


4.0.0
com.gp6
Maven
1.0



org.apache.maven.plugins
maven-antrun-plugin
1.1
   
      
         id.pre-site
         pre-site
         
            run
         
         
            
               pre-site phase
            
         
      
      
         id.site
         site
         
         run
         
         
               site phase
            
         
      
      
         id.post-site
         post-site
         
            run
         
         
            
               post-site phase
            
         
      
      
         id.site-deploy
         site-deploy
         
            run
         
         
            
               site-deploy phase
            
         
      
   




打开命令控制台,进入该文件夹包含 pom.xml 并执行以下 mvn 命令。

C:\MVN\project>mvn site

Maven将开始处理并显示网站的生命周期阶段的各个阶段。

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building Unnamed - com.gp6:Maven:jar:1.0
[INFO]    task-segment: [site]
[INFO] ------------------------------------------------------------------
[INFO] [antrun:run {execution: id.pre-site}]
[INFO] Executing tasks
     [echo] pre-site phase
[INFO] Executed tasks
[INFO] [site:site {execution: default-site}]
[INFO] Generating "About" report.
[INFO] Generating "Issue Tracking" report.
[INFO] Generating "Project Team" report.
[INFO] Generating "Dependencies" report.
[INFO] Generating "Project Plugins" report.
[INFO] Generating "Continuous Integration" report.
[INFO] Generating "Source Repository" report.
[INFO] Generating "Project License" report.
[INFO] Generating "Mailing Lists" report.
[INFO] Generating "Plugin Management" report.
[INFO] Generating "Project Summary" report.
[INFO] [antrun:run {execution: id.site}]
[INFO] Executing tasks
     [echo] site phase
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Sat Jul 07 15:25:10 IST 2012
[INFO] Final Memory: 24M/149M
[INFO] -

你可能感兴趣的:(9 Maven 构建生命周期)