9 Maven 构建生命周期

作者: 笑Skr人啊 | 来源:发表于2017-05-04 11:45 被阅读7次

构建生命周期阶段的目标是执行顺序是一个良好定义的序列。
这里使用一个例子,一个典型的 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 项目文件夹中,具体内容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gp6</groupId>
<artifactId>MavenClean</artifactId>
<version>1.0</version>
<build>
<plugins>
   <plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-antrun-plugin</artifactId>
   <version>1.1</version>
   <executions>
      <execution>
         <id>id.pre-clean</id>
         <phase>pre-clean</phase>
         <goals>
            <goal>run</goal>
         </goals>
         <configuration>
            <tasks>
               <echo>pre-clean phase</echo>
            </tasks>
         </configuration>
      </execution>
      <execution>
         <id>id.clean</id>
         <phase>clean</phase>
         <goals>
          <goal>run</goal>
         </goals>
         <configuration>
            <tasks>
               <echo>clean phase</echo>
            </tasks>
         </configuration>
      </execution>
      <execution>
         <id>id.post-clean</id>
         <phase>post-clean</phase>
         <goals>
            <goal>run</goal>
         </goals>
         <configuration>
            <tasks>
               <echo>post-clean phase</echo>
            </tasks>
         </configuration>
      </execution>
   </executions>
   </plugin>
</plugins>
</build>
</project>

现在,打开命令控制台,到该文件夹包含 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 文件。

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gp6</groupId>
<artifactId>Maven</artifactId>
<version>1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
   <execution>
      <id>id.validate</id>
      <phase>validate</phase>
      <goals>
         <goal>run</goal>       </goals>
      <configuration>
         <tasks>
            <echo>validate phase</echo>
         </tasks>
      </configuration>
   </execution>
   <execution>
      <id>id.compile</id>
      <phase>compile</phase>
      <goals>
         <goal>run</goal>
      </goals>
      <configuration>
         <tasks>
            <echo>compile phase</echo>
         </tasks>
      </configuration>
   </execution>
   <execution>
      <id>id.test</id>
      <phase>test</phase>
      <goals>
         <goal>run</goal>
      </goals>
      <configuration>
         <tasks>
            <echo>test phase</echo>
         </tasks>
      </configuration>
   </execution>
   <execution>
         <id>id.package</id>
         <phase>package</phase>
         <goals>
            <goal>run</goal>
         </goals>
         <configuration>
         <tasks>
            <echo>package phase</echo>
         </tasks>
      </configuration>
   </execution>
   <execution>
      <id>id.deploy</id>
      <phase>deploy</phase>
      <goals>
         <goal>run</goal>
      </goals>
      <configuration>
      <tasks>
         <echo>deploy phase</echo>
      </tasks>
      </configuration>
   </execution>
</executions>
</plugin>
</plugins>
</build>
</project>

现在,打开命令控制台,进入包含 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 项目文件夹中

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gp6</groupId>
<artifactId>Maven</artifactId>
<version>1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
   <executions>
      <execution>
         <id>id.pre-site</id>
         <phase>pre-site</phase>
         <goals>
            <goal>run</goal>
         </goals>
         <configuration>
            <tasks>
               <echo>pre-site phase</echo>
            </tasks>
         </configuration>
      </execution>
      <execution>
         <id>id.site</id>
         <phase>site</phase>
         <goals>
         <goal>run</goal>
         </goals>
         <configuration><tasks>
               <echo>site phase</echo>
            </tasks>
         </configuration>
      </execution>
      <execution>
         <id>id.post-site</id>
         <phase>post-site</phase>
         <goals>
            <goal>run</goal>
         </goals>
         <configuration>
            <tasks>
               <echo>post-site phase</echo>
            </tasks>
         </configuration>
      </execution>
      <execution>
         <id>id.site-deploy</id>
         <phase>site-deploy</phase>
         <goals>
            <goal>run</goal>
         </goals>
         <configuration>
            <tasks>
               <echo>site-deploy phase</echo>
            </tasks>
         </configuration>
      </execution>
   </executions>
</plugin>
</plugins>
</build>
</project>

打开命令控制台,进入该文件夹包含 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] -

相关文章

  • MAVEN简介之——pom.xml

    maven构建的生命周期 maven是围绕着构建生命周期这个核心概念为基础的。maven里有3个内嵌的构建生命周期...

  • Maven 构建生命周期 : Maven Lifecycle R

    Maven 构建生命周期Maven Lifecycle Reference https://maven.apach...

  • 生命周期与插件

    生命周期 maven构建生命周期描述的是一次构建过程经历了多少个事件 maven对项目构建的生命周期大体分为三个阶...

  • maven生命周期-03

    maven的生命周期 什么是 Maven 的生命周期?Maven 生命周期定义了各个构建环节的执行顺序,有了这个清...

  • Maven Pom文件总结

    Maven maven生命周期 clean: 删除构建目录 validate: 检查工程配置是否正确,完成构建过程...

  • 4.maven 配置详解

    生命周期构建生命周期,描述了构建的过程,Maven内置了3个构建生命周期clean(清理)default(默认,重...

  • Maven 生命周期

    1. Maven 构建生命周期 Maven 构建生命周期就是 Maven 将一个整体任务划分为一个个的阶段,类似于...

  • Maven构建过程

    一、Maven 构建生命周期 1.1 简介 项目构建的生命周期概念在Maven之前就已经存在了。软件开发人员每天都...

  • Maven 构建生命周期和插件简介

    Maven 构建生命周期定义了一个项目构建跟发布的过程。 Maven defines 3 lifecycles i...

  • 繁琐的任务简单化,Maven的插件机制

    Maven的生命周期与Maven插件是项目绑定的,生命周期可以理解为项目构建步骤的集合,它定义了各个构建环节的执行...

网友评论

    本文标题:9 Maven 构建生命周期

    本文链接:https://www.haomeiwen.com/subject/jsvrtxtx.html