• Maven生命周期


    前言:

    gradle复习知识点的时候,发现这块以前记录过的丢失了,现在重新补一下,记录复习!

    Maven生命周期的理解

    生命周期你可以理解为:构建工程的步骤。而Maven生命周期你就可以理解为:构建项目的过程中,清理、初始化、编译、打包、测试、部署等构建步骤。笼统的讲就是:为了对所有的构建过程进行抽象和统一。大多数人会在说maven生命周期的时候,直接说其主要的阶段: clean,compile,test,package,verify,install 和 deploy 这几个阶段,但其实它并不是全部。

    在Maven的生命周期中有三套相互独立的生命周期,是不是有点绕口?没错,这三套生命周期是相互独立的!也就是说,你可要仅调用clean来清理工作目录,仅调用site来生成站点。当然你也可以直接运行 mvn clean install site运行所有这三套生命周期。
    这三套生命周期分别是:

    • clean - 清理项目

    clean生命周期中存在着clean阶段,每套生命周期都由一组阶段, 例如:命令行输入的命令就对应于一个特定的阶段。mvn clean 中的clean就对应着Clean生命周期中clean阶段。 Clean生命周期一共包含了三个阶段:

    1. 执行清理前需要完成的工作。(pre-clean
    2. 清理上一次构建过程中生成的文件,如编译后的class文件等。(clean)
    3. 执行清理后需要完成的工作。(post-clean
    • default - 构建项目
      Default生命周期是Maven生命周期中最重要的,绝大部分工作都发生在这个生命周期中。它具有很多阶段,常用的阶段:
    1. 验证项目结构是否正常,必要的配置文件是否存在(validate
    2. 做构建前初始化操作,如初始化参数,创建必要目录等(initialize
    3. 产生在编译过程中需要的源代码(generate-sources
    4. 处理源代码,比如过滤值(process-sources
    5. 产生主代码中的资源在classpath中的包(generate-resources
    6. 复制并处理资源文件,至目标目录,准备打包(process-resources
    7. 编译项目的源代码(compile
    8. 产生编译过程中生成的文件(process-classes
    9. 产生编译过程中测试相关的代码(generate-test-sources
    10. 处理测试代码(process-test-sources
    11. 产生测试中资源在classpath中的包(generate-test-resources
    12. 复制并处理资源文件,至目标测试目录(process-test-resources
    13. 编译测试源代码(test-compile
    14. 产生编译测试代码过程的文件test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署(process-test-classes
    15. 处理打包前需要初始化的准备工作(prepare-package
    16. 接受编译好的代码,打包成可发布格式,如 JAR(package
    17. 做好集成测试前的准备工作,比如集成环境的参数设置(pre-integration-test
    18. 集成测试(integration-test
    19. 完成集成测试前的准备工作,比如集成环境的参数设置(post-integration-test
    20. 检测测试后的包是否完好(verify
    21. 将包安装至本地仓库,以让其它项目依赖(install
    22. 将最终的包复制到远程的仓库,以让其它开发人员与项目共享(deploy

    运行任何一个阶段的时候,它前面的所有阶段都会被运行,这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。此外,Maven的插件机制是完全依赖Maven的生命周期的,而gradle就提出了增量构建,具体与其输入、task、输出有关,所以gradle的构建效率也比maven快

    • site - 生成项目站点
      Site生命周期:
    1. 执行一些需要在生成站点文档之前完成的工作(pre-site
    2. 生成项目的站点文档(pre-site
    3. 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备(post-site
    4. 将生成的站点文档部署到特定的服务器上(site-deploy
  • 相关阅读:
    Windows 通过注册表添加:鼠标右键文件夹内空白处,提示打开 Cmd、Powershell
    xavier安装torch-gpu
    iOS开发之编译OpenSSL静态库
    特征选择技术总结
    Linux计划任务与日志
    代码随想录第52天 | 300.最长递增子序列 、 674. 最长连续递增序列 、 718. 最长重复子数组
    ubuntu18.04环境搭建
    cv面试百问day3
    Thread的基本用法
    Linux:给openlab搭建web网站
  • 原文地址:https://blog.csdn.net/qq_37432174/article/details/127837156