4、maven——构建生命周期

  1. 什么是生命周期?
    1. 构建生命周期是一组阶段的序列(sequence of phase),每个阶段定义了目标被执行的顺序,这里的阶段就是生命周期的一部分。
  2. 一个典型的Maven生命周期由一些几个阶段的序列组成
    1. 当需要在某个特定的阶段之前或者是之后执行目标的时候,需要使用pre和post来定义这个目标。
  3. 当Maven开始构建工程,会按照所定义的阶段序列的顺序执行每个阶段注册的目标,Maven有一下三个标准的生命周期:
    1. clean
    2. default(or build)
    3. sit
  4. 目标
    1. 目标是一个特定的、对构建和管理工程有帮助的任务,他可能绑定了0或者多个构建阶段,没有绑定任何构建阶段的目标可以在构建生命周期之外被直接调用执行。
    2. 执行的顺序依赖于目标和构建阶段被调用的顺序,
  5. 考虑下面的命令,clean和package参数是构建阶段,而dependency:copy-dependencies是一个目标。
  6. mvn clean dependency:copy-dependencies package
    1. 这里的clean阶段将会被首先执行,然后dependency:copy-dependencies目标会被执行,最终package阶段被执行。

  1. Clean生命周期
    1. 当我们执行 mvn post-clean命令的时候,Maven调用clean生命周期,它包含一下阶段组成
      1. pre-clean
      2. clean
      3. post-clean
    2. Maven的clean目标(clean:clean)绑定到了clean生命周期的clean阶段,它的clean:clean目标通过删除构建目录删除了构建输出,,所以当mvn clean 命令执行的时候,Maven删除了构建目录。
    3. 我们可以通过在上面的clean生命周期的任何阶段定义目标来修改这部分的操作
    4. 在下面的例子中,我们将maven-antrun-plugin:run目标添加到pre-clean、clean、和post-clean阶段中,这样我们可以在clean生命周期的各个阶段中显示文本信息
      1. <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.companyname.projectgroup</groupId>
        <artifactId>project</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>
      2. 现在 打开命令行窗口,跳转到pom.xml文件所在的目录,执行下面的mvn命令
        1. mvn post-clean
        2. Maven将会开始处理并显示clean生命周期的所有阶段
      3. 可以尝试修改mvn clean命令,来显示pre-clean和clean,而在post-clean阶段不执行任何的操作
  2. Default(or build)生命周期
    1. 这是maven的主要生命周期,被用于构建应用,主要包括以下23个阶段
    2. 与Maven生命周期相关的重要概念需要说明
    3. 当一个阶段通过Maven的命令调用的时候,例如:mvn compile,只有该阶段之前以及包括该阶段在内的所有阶段会被执行
    4. 不同的maven目标将会根据打包的类型(JAR/WAR/EAR),被绑定到不同的Maven生命周期
    5. 在下面的例子当中,我们将maven-antrun-plugin:run目标添加到Build生命周期的一部分阶段中,这样我们可以显示生命周期的文本信息
    6. 例子
      1. <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.companyname.projectgroup</groupId>
        <artifactId>project</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>
      2. 现在跳转到pom.xml文件所在的目录,执行以下命令
        1. mvn compile
      3. maven将会开始处理并显示直到编译阶段的构建生命周期的各个阶段
  3. Site生命周期
    1. Maven Site插件一般用来创建新的报告文档,部署站点等
    2. 阶段
      1. pre-site
      2. site
      3. post-site
      4. site-deploy
    3. 在下面的例子中,我们将maven-antrun-plugin:run目标添加到Site生命周期中,这样我们显示生命周期的所有文本信息
      1. <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.companyname.projectgroup</groupId>
        <artifactId>project</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>
    4. 现在打开控制台,跳转到pom.xml所在目录,并且执行以下命令
      1. mvn site
      2. maven将会开始执行,并显示直到site阶段的生命周期的各个阶段

来自为知笔记(Wiz)

时间: 2024-12-28 10:00:06

4、maven——构建生命周期的相关文章

Maven 构建生命周期

构建生命周期是什么? 构建生命周期阶段的目标是执行顺序是一个良好定义的序列.这里使用一个例子,一个典型的 Maven 构建生命周期是由下列顺序的阶段: 阶段 处理 描述 准备资源 资源复制 资源复制可以进行定制 编译 执行编译 源代码编译在此阶段完成 包装 打包 创建JAR/WAR包如在 pom.xml 中定义提及的包 安装 安装 这一阶段在本地/远程Maven仓库安装程序包 可用于注册必须执行一个特定的阶段之前或之后的目标,有之前处理和之后阶段.当 Maven 开始建立一个项目,它通过定义序列

深入理解maven构建生命周期和各种plugin插件

深入理解maven构建生命周期和各种plugin插件 本博文不会长篇大论的讨论生命周期的概念,而是从各种plugin的实际功能和应用出发,来讨论maven的实际应用,说得通透一点,生命周期(lifecycle)可以理解成由各种plugin按照一定的顺序执行来完成java项目清理.编译.打包.测试.布署等整个项目的流程的一个过程. 生命周期(lifecycle)由各个阶段组成,每个阶段由maven的插件plugin来执行完成.生命周期(lifecycle)主要包括clean.resources.c

Apache Maven(二):构建生命周期

Maven 约定的目录结构 我要遵循Maven已经约定好的目录结构,才能让maven在自动构建过程中找到对应的资源进行构建处理.以下是maven约定的目录结构: 项目名称 |-- pom.xml :Maven工程的核心配置文件 |-- src |-- main :主程序 | |-- java :JAVA源文件 | |-- resources :框架或其他工具配置文件 |-- test :测试程序 |-- java :JAVA源文件 |-- resources :框架或其他工具配置文件 是我们只需

Maven的构建生命周期理解

以下引用官方的生命周期解释https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html: 一.构建生命周期基础: Maven基于构建生命周期的中心概念.这意味着构建和分发特定工件(项目)的过程被明确定义. 对于构建项目的人员,这意味着只需要学习一小堆命令即可构建任何Maven项目,POM将确保他们获得所需的结果. 有三个内置的生命周期:默认(default),清洁(clean)和站点(site).在

Maven聚合模块与继承和Maven的生命周期

端碗吹水 Maven聚合模块: 因为Maven是提倡模块化编程的,所以会以多个工程分为多个模块.如果所有的功能.模块都写在一个工程里的话,不方便于扩展.升级.修改.查看和团队开发,而且也不方便于模块的复用. Maven则是提倡将一个项目拆分成多个工程,每个工程完成一个模块或功能,这些工程就像零件一般,分别去进行开发,分为多个工程也方便于维护和分工合作. 每个工程模块可以通过pom配置文件实现串联,例如配置好pom文件之后,A工程可以直接对B工程的代码进行调用,C工程可以对A和B工程的代码进行调用

maven的生命周期,和maven常用命令

Maven是围绕着构建生命周期的核心概念为原型,整个项目的创建和部署都是围绕着生命周期展开的,一个生命周期由若干个生命周期阶段组成. maven有三个内置的默认生命周期分别是default, clean and site. 默认(default)的生命周期处理你的项目部署,clean生命周期处理项目的清洗,而(site)网站的生命周期处理你的项目的站点文档的创建. 这些构建的生命周期中的每一个由编阶段的一个不同的列表,其中,构建阶段表示在生命周期的一个阶段所定义. 例如,default的生命周期

maven入门(3)maven的生命周期2

[0]README 1)本文部分文字转自 "maven实战",旨在 review  "maven(7)生命周期和插件" 的相关知识: 2)maven 另外两个核心概念是生命周期和插件:maven的生命周期是抽象的,其实际行为都由插件来完成,如package阶段的任何可能都会由 maven-jar-plugin 完成: [1]何为生命周期 1)intro:maven 的 生命周期就是为了对所有的构建过程进行抽象和统一: 2)maven的生命周期: 生命周期本身不做任何

Maven进价:Maven的生命周期阶段

一.Maven的生命周期 Maven的生命周期就是对所有的构建过程进行抽象和统一.包含了项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等几乎所有的构建步骤. Maven的生命周期是抽象的,即生命周期不做任何实际的工作,实际任务由插件完成,类似于设计模式中的模板方法. 二.三套生命周期 Maven有三套相互独立的生命周期,分别是clean.default和site.每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段. 1.clean生命周期:清

Maven 系列 七 :Maven的生命周期和插件

一个完整的项目构建过程通常包括清理.编译.测试.打包.集成测试.验证.部署等步骤,Maven从中抽取了一套完善的.易扩展的生命周期.Maven的生命周期是抽象的,其中的具体任务都交由插件来完成.Maven为大多数构建任务编写并绑定了默认的插件,如针对编译的插件:maven-compiler-plugin.用户也可自行配置或编写插件. 1 . 三套生命周期 Maven定义了三套生命周期:clean.default.site,每个生命周期都包含了一些阶段(phase).三套生命周期相互独立,但各个生