1. 程式人生 > >Maven plugin中的lifecycle、phase、goal概念及作用的理解

Maven plugin中的lifecycle、phase、goal概念及作用的理解

lifecycle:生命週期,這是maven最高級別的的控制單元,它是一系列的phase組成,也就是說,一個生命週期,就是一個大任務的總稱,不管它裡面分成多少個子任務,反正就是執行一個lifecycle,就是交待了一個任務,執行完後,就得到了一個結果,中間的過程,是phase完成的,自己可以定義自己的lifecycle,包含自己想要的phase

phase:可以理解為任務單元,lifecycle是總任務,phase就是總任務分出來的一個個子任務,但是這些子任務是被規格化的,它可以同時被多個lifecycle所包含,一個lifecycle可以包含任意個phase,phase的執行是按順序的,一個phase可以繫結很多個goal,至少為一個,沒有goal的phase是沒有意義的


goal: 這是執行任務的最小單元,它可以繫結到任意個phase中,一個phase有一個或多個goal,goal也是按順序執行的,一個phase被執行時,繫結到phase裡的goal會按繫結的時間被順序執行,不管phase己經綁定了多少個goal,你自己定義的goal都可以繼續綁到phase中

官方文件:

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

http://maven.apache.org/ref/3.3.9/maven-core/lifecycles.html

mojo: lifecycle與phase與goal都是概念上的東西,mojo才是做具體事情的,可以簡單理解mojo為goal的實現類,它繼承於AbstractMojo,有一個execute方法,goal等的定義都是通過在mojo裡定義一些註釋的anotation來實現的,maven會在打包時,自動根據這些anotation生成一些xml檔案,放在plugin的jar包裡