生命週期(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)。
本文轉自 charles_wang888 51CTO博客,原文鏈接:http://blog.51cto.com/supercharles888/834285,