Maven有三套相互独立的生命周期。这三套生命周期分别是:

  • Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
  • Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
  • Site Lifecycle 生成项目报告,站点,发布站点。

之所以称为三套相互独立的,是因为可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然也可以直接运行 mvn clean install site 运行所有这三套生命周期。

 

clean和site相对比较简单,先解释一下。

clean(清理)  此生命周期旨在给工程做清理工作,它主要包含以下阶段:

  1. pre-clean - 执行项目清理前所需要的工作。
  2. clean - 清理上一次build项目生成的文件。
  3. post-clean - 执行完成项目清理所需的工作。

site(站点)

  1. pre-site - 执行一些生成项目站点前的准备工作。
  2. site - 生成项目站点的文档。
  3. post-site - 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备。
  4. site-deploy - 将生成的站点文档部署到特定的服务器上。

(经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这也是Maven相当强大的功能。)
default(默认)- 绝大部分工作都发生在这个生命周期中

  1. validate - 验证项目是否正确且所有必要的信息都可用。
  2. initialize - 初始化构建工作,如:设置参数,创建目录等。
  3. generate-sources - 为包含在编译范围内的代码生成源代码。
  4. process-sources - 处理源代码, 如过滤值。
  5. generate-resources -
  6. process-resources - 复制并处理资源文件,至目标目录,准备打包。
  7. compile - 编译项目中的源代码。
  8. process-classes - 为编译生成的文件做后期工作, 例如做Java类的字节码增强。
  9. generate-test-sources - 为编译内容生成测试源代码。
  10. process-test-sources - 处理测试源代码。
  11. generate-test-resources -
  12. process-test-resources - 复制并处理资源文件,至目标测试目录。
  13. test-compile - 将需测试源代码编译到路径。一般来说,是编译/src/test/java目录下的java文件至目标输出的测试classpath目录中。
  14. process-test-classes -
  15. test - 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
  16. prepare-package -
  17. package - 接受编译好的代码,打包成可发布的格式,如 JAR 。
  18. pre-integration-test -
  19. integration-test - 按需求将发布包部署到运行环境。
  20. post-integration-test -
  21. verify -
  22. install -将包安装到本地仓库,给其他本地引用提供依赖。
  23. deploy -完成集成和发布工作,将最终包复制到远程仓库以便分享给其他开发人员。

运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。此外,Maven的插件机制是完全依赖Maven的生命周期的,因此理解生命周期至关重要。


感谢大家的阅读, 如有疑问可以加我微信