(VII)Maven生命周期

概述
Maven出现以前,项目构建的生命周期就已经存在了。软件开发人员每天都在对项目进行清理、编译、测试及部署,而且往往使用不同的方式做类似的工作。Maven生命周期对所有的构建过程进行抽象和统一,总结了一套高度完善、易扩展的生命周期。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成等几乎所有的构建步骤。

敲黑板,划重点啦!
Maven生命周期是抽象的,本身不做任何实际工作,实际任务都交由插件完成。
这种思想类似于设计模式中的模版方法模式(在父类中定义算法的整体结构,子类可以通过实现或者重写父类的方法来控制实际的行为)。

1.三套生命周期
Maven拥有三套相互独立的生命周期,分别是clean(清理项目),default(构建项目)和site(建立项目站点)。仅调用某套生命周期的某阶段不会对其他生命周期产生影响。每个生命周期都包含多个有序的阶段(phase),并且后面的阶段依赖于前面的阶段。Maven生命周期文档链接

  • Clean Lifecycle,目的是清理项目,包含三个阶段:
    pre-clean 执行清理前需要完成的工作
    clean 清理上一次构建生成的所有文件
    post-clean 完成清理后需要完成的工作

  • Default Lifecycle,目的是构建项目,生命周期中最核心的部分:
    validate 验证项目是否正确及是否提供必要信息。
    initialize 初始化构建状态,例如设置属性或创建目录。
    generate-sources 生成所有包含在编译中的源代码。
    Δ process-sources 处理项目主资源文件。对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
    generate-resources 生成包含在包中的资源
    process-resources 将资源复制并处理到目标目录中,为打包做准备。
    Δ compile 编译项目的主源码。编译src/main/resources目录下的java文件至项目输出的主classpath目录中。
    process-classes 处理编译后的class文件。
    generate-test-sources 生成所有包含在编译中的测试代码。
    Δ process-test-sources 处理项目测试源文件。对src/test/resources目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中。
    generate-test-resources 创建测试资源。
    process-test-resources 将资源复制并处理到目标目录中。
    Δ test-compile 编译项目的测试代码。编译src/test/resources目录下的java文件至项目输出的测试classpath目录中。
    process-test-classes 处理测试代码编译后的class文件。
    Δ test 使用单元测试框架运行测试。测试代码不会被打包或部署。
    prepare-package 打包前要做的准备工作。比如,解压缩,处理版本。
    Δ package 接受编译好的代码,打包成可发布的格式。
    pre-integration-test 在集成测试执行之前所需的操作。比如,设置环境等。
    integration-test 如果需要,可将程序包处理并部署到可运行集成测试的环境中。
    post-integration-test 完成集成测试后所需的操作。比如,清理环境等。
    verify 运行所有检查来验证包是否有效及是否符合质量标准。
    Δ install 将包安装到Maven本地仓库,供本地其他Maven项目使用
    Δ deploy 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。

  • Site Lifecycle 目的是建立和发布项目站点,Maven可以基于POM包含的信息,自动生成一个站点,方便团队交流和发布项目信息。该生命周期包含以下阶段:
    pre-site 执行一些在生成项目站点之前需要完成的工作
    site 生成项目站点文档
    post-site 完成生成项目站点后需要完成的工作
    site-deploy 将生成的项目站点发布到服务器上。

2.命令行

mvn clean

调用clean生命周期的clean阶段。实际执行的阶段为clean生命周期的pre-clean和clean阶段。

mvn test

调用default生命周期的test阶段。实际执行的阶段为default生命周期的validate、initialize等, test及其之前的所有阶段。

mvn clean install

调用clean生命周期的clean阶段和default生命周期的install阶段。实际执行的阶段为clean生命周期的pre-clean和clean阶段,default生命周期的install及其之前的所有阶段。

mvn clean deploy site-deploy

调用clean生命周期的clean阶段和default生命周期的install阶段。实际执行的阶段为clean生命周期的pre-clean和clean阶段,default生命周期的所有阶段,site生命周期的所有阶段。


所有的Maven生命周期定义 我们可以去查看$M2_HOME$\lib\maven-core-3.3.9\META-INF\plexus\下的componenets.xml,例如Default生命周期阶段定义:


  org.apache.maven.lifecycle.Lifecycle
  org.apache.maven.lifecycle.Lifecycle
  default
  
    default
    
    
      validate
      initialize
      generate-sources
      process-sources
      generate-resources
      process-resources
      compile
      process-classes
      generate-test-sources
      process-test-sources
      generate-test-resources
      process-test-resources
      test-compile
      process-test-classes
      test
      prepare-package
      package
      pre-integration-test
      integration-test
      post-integration-test
      verify
      install
      deploy
    
    
  

接下来进入Maven插件的学习。


——《Maven实战》学习笔记

你可能感兴趣的:((VII)Maven生命周期)