构建流程

Maven的构建生命周期(Lifecycle)、阶段(Phase)和目标(Goal)是Maven构建过程的核心概念。它们共同定义了Maven如何构建和管理项目。
总结来说,Maven的构建生命周期定义了构建过程中的主要步骤,阶段是生命周期中的具体步骤,而目标则是每个阶段实际执行的任务。通过这种方式,Maven提供了一种灵活且可扩展的构建系统,允许开发人员根据需要自定义构建过程。

生命周期

Maven定义了三个主要的构建生命周期:cleandefaultsite
每个生命周期都包含一系列的阶段,这些阶段是有序的,并且每个阶段都执行特定的任务。

  • clean:清理项目,删除之前构建生成的文件。
  • default:处理项目的编译、测试、打包、安装和部署等。
  • site:生成项目的文档和报告。

阶段

每个构建生命周期都由一系列的阶段组成。
阶段是有序的,它们定义了构建过程中的一个步骤。
例如,default生命周期包括以下阶段:validatecompiletestpackageverifyinstall 、 deploy……

  • validate:验证项目是否正确,所有必要的信息都是可用的。
  • compile:编译项目的源代码。
  • test:使用适当的单元测试框架运行测试,这些测试不应要求代码被打包或部署。
  • package:打包编译后的代码,在JAR或WAR等格式中。
  • verify:对集成测试的结果进行检查,以确保质量达标。
  • install:将包安装到本地仓库,以供其他项目使用。
  • deploy:在构建环境中完成,将最终的包复制到远程仓库以共享给其他开发者和项目。

目标

每个阶段可以绑定一个或多个目标。目标通常是非常具体的任务,如spring-boot:run(启动Springboot)。目标可以被直接调用,也可以在构建生命周期中的某个阶段自动执行。

例如,当你运行 mvn compile 命令时,Maven会执行 default 生命周期到 compile 阶段为止,compile 这个阶段绑定了 compile 目标(即 compiler:compile),用于编译项目源代码。

构建插件

使用 Maven 构建项目就是执行生命周期到指定的阶段为止,每个阶段会执行自己默认的若干个目标。目标是最小任务单元。

每个阶段具体要执行什么目标,实际上是通过使用插件进行绑定的。比如 compile 阶段通过插件 maven-compiler-plugincompile 阶段绑定了 compiler:compile,在 test-compile 阶段绑定了 compiler:testCompile,这在插件主页可以查到。可以写成如下的配置文件,阶段及其绑定的若干个目标被包括在一个 execution 中,对于每个阶段,都可以有独有的配置项(configuration)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration> ... </configuration>
</execution>
<execution>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration> ... </configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>