4maven——构建生命周期

Posted yangzsnews

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4maven——构建生命周期相关的知识,希望对你有一定的参考价值。

  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阶段的生命周期的各个阶段





以上是关于4maven——构建生命周期的主要内容,如果未能解决你的问题,请参考以下文章

调用 replace() 时片段的生命周期是啥?

Android片段生命周期:onResume调用了两次

在不存在的片段上调用片段生命周期和 onCreate 的问题

Maven

导航上的片段生命周期重叠

Android 片段生命周期