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

一个典型的 Maven 构建(build)生命周期是由以下几个阶段的序列组成的:

雷小天博客

为了完成 default 生命周期,这些阶段(包括其他未在上面罗列的生命周期阶段)将被按顺序地执行。

Maven 有以下三个标准的生命周期:

  • clean:项目清理的处理

  • default(或 build):项目部署的处理

  • site:项目站点文档创建的处理

构建阶段由插件目标构成

一个插件目标代表一个特定的任务(比构建阶段更为精细),这有助于项目的构建和管理。这些目标可能被绑定到多个阶段或者无绑定。不绑定到任何构建阶段的目标可以在构建生命周期之外通过直接调用执行。这些目标的执行顺序取决于调用目标和构建阶段的顺序。

例如,考虑下面的命令:

clean 和 pakage 是构建阶段,dependency:copy-dependencies 是目标

mvn clean dependency:copy-dependencies package

这里的 clean 阶段将会被首先执行,然后 dependency:copy-dependencies 目标会被执行,最终 package 阶段被执行。

什么意思呢?首先我在F/java/project的文件夹中创建一个pom.xml文件,然后切换到命令窗口,在命令行输入:mvn clean dependency:copy-dependencies package

雷小天博客

等到构建完成后,发现在文件夹F/java/project多了个target文件夹,里面有project-1.0.jar文件和pom.properties文件

雷小天博客

Clean 生命周期

当我们执行 mvn post-clean 命令时,Maven 调用 clean 生命周期,它包含以下阶段:

  • pre-clean:执行一些需要在clean之前完成的工作

  • clean:移除所有上一次构建生成的文件

  • post-clean:执行一些需要在clean之后立刻完成的工作

mvn clean 中的 clean 就是上面的 clean,在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,如果执行 mvn clean 将运行以下两个生命周期阶段:

pre-clean, clean

什么意思呢?我们执行命令mvn clean,又会把文件夹target删除掉,回到原来只含有pom.xml样子。

雷小天博客

如果我们运行 mvn post-clean ,则运行以下三个生命周期阶段:

pre-clean, clean, post-clean

我们可以通过在上面的 clean 生命周期的任何阶段定义目标来修改这部分的操作行为。

在下面的例子中,我们将 maven-antrun-plugin:run 目标添加到 pre-clean、clean 和 post-clean 阶段中。这样我们可以在 clean 生命周期的各个阶段显示文本信息。

我们已经在 F:\JAVA\project 目录下创建了一个 pom.xml 文件。

现在打开命令控制台,跳转到 pom.xml 所在目录,并执行下面的 mvn 命令。

C:\MVN\project>mvn post-clean

Maven 将会开始处理并显示 clean 生命周期的所有阶段。