# Maven Build Lifecycle

Maven 的生命周期 (opens new window)是对所有的构建过程进行抽象和统一,其实际行为都由插件来完成。

# Command Line Calls

三个生命周期相互独立,而一个生命周期的阶段是有前后依赖关系的。例如:

  • mvn clean:该命令执行的阶段为 clean 生命周期的 pre-clean 和 clean 阶段。
  • mvn test:执行 default 生命周期的 validate、initialize 等,直到 test 的所有阶段。
  • mvn clean package:执行 clean 的 pre-clean、clean,default 的 validate 到 package 的所有阶段。

# Plugins

# Plugin Goal

一个插件可能有多个功能,每个功能就是一个插件目标。

例如 maven-dependency-plugin 有十多个目标,最常用的:

$ mvn dependency:analyze

# Plugin Bindings

Maven 的生命周期与插件相互绑定,用以完成实际的构建任务。

例如项目编译这一任务,它对应了 default 生命周期的 compile 阶段,而 maven-compile-plugin 这一插件的 compile 目标能完成该任务。因此,将它们绑定,就能实现编译的目的。

除了内置绑定以外,用户还能够自己选择将某个插件目标绑定到生命周期的某个阶段上。

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
      <execution>
        <id>echo-pre-clean</id>
        <phase>pre-clean</phase>
        <goals>
          <goal>run</goal>
        </goals>
        <configuration>
          <target>
              <echo>pre-clean phase</echo>
          </target>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>

# Reference