生命周期(life-cycle)是由阶段(Phase)组成的,我们敲入的命令无法直接触摸到某生命周期,因为这不是我们控制的,是由MAVEN自身控制的,我们只能摸到某个生命周期的某个阶段(Phase)。
比如最常见的命令 mvn clean ,他其实要maven做的不是执行Clean 生命周期(你摸不到Clean生命周期),而是执行Clean生命周期的clean 阶段。
因为Clean 生命周期有3种阶段 (pre-clean / clean / post-clean),而maven约定为,执行某阶段一定执行前面所有阶段
所以 mvn clean 命令 等效于 mvn pre-clean+ mvn clean
mvn post-clean 命令等效于 mvn pre-clean + mvn clean + mvn post-clean.
回到David PPT里面的那个例子,那张PPT slide实际上代表了maven 的另外一个生命周期 ,也就是赫赫有名的Default 生命周期
这个生命周期很长很长,我们也没必要知道他全部细节,我们只需要知道以下结论:
mvn install 命令 (我们命令指向了Default生命周期的install阶段) 实际上是让maven自身跑完Default生命周期的(validate阶段+generate-sources阶段+process-sources阶段+……+install阶段)
总之,2句话概括就是
(1)人工键入命令总是指向某生命周期的某阶段
(2) maven 引擎根据你指向的阶段Pn去跑完 阶段所在的生命周期的(某Life-Cycle) 该阶段之前的 所有阶段(P1+P2+…+Pn-1)。
转载于:https://blog.51cto.com/supercharles888/834285