Maven

(VII)Maven生命周期

2018-06-13  本文已影响0人  SonyaBaby

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

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

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

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生命周期阶段定义:

<component>
  <role>org.apache.maven.lifecycle.Lifecycle</role>
  <implementation>org.apache.maven.lifecycle.Lifecycle</implementation>
  <role-hint>default</role-hint>
  <configuration>
    <id>default</id>
    
    <phases>
      <phase>validate</phase>
      <phase>initialize</phase>
      <phase>generate-sources</phase>
      <phase>process-sources</phase>
      <phase>generate-resources</phase>
      <phase>process-resources</phase>
      <phase>compile</phase>
      <phase>process-classes</phase>
      <phase>generate-test-sources</phase>
      <phase>process-test-sources</phase>
      <phase>generate-test-resources</phase>
      <phase>process-test-resources</phase>
      <phase>test-compile</phase>
      <phase>process-test-classes</phase>
      <phase>test</phase>
      <phase>prepare-package</phase>
      <phase>package</phase>
      <phase>pre-integration-test</phase>
      <phase>integration-test</phase>
      <phase>post-integration-test</phase>
      <phase>verify</phase>
      <phase>install</phase>
      <phase>deploy</phase>
    </phases>
    
  </configuration>
</component>

接下来进入Maven插件的学习


——《Maven实战》学习笔记

上一篇 下一篇

猜你喜欢

热点阅读