前些日子我們談到maven的核心理念約定大於配置,maven規劃了standard layout,再來要談的就是構建的標準流程,有了表準流程我們就可以按表操課,在每個既定的表準流程安排預設的plugin執行他的目標,今日談的就是maven三大lifecycle,各自扮演不同的職責。
生命週期是什麼呢,簡單的說就是一個開始到結束的過程,它可以分為很多個階段以人生來說,有求學階段、工作階段、退休階段等,當你想要到工作階段勢必要經過求學階段。Maven Lifecycle每個生命周期都有它自己的階段目標,一旦你想執行後面的階段目標,前面的階段目標你都需要走一回。
default生命週期扮演我們build專案所需執行的所有步驟,會以每個階段phase
來描述每個步驟,會依據package對象**(jar/war/ear/rar)
**的不同針對不同phase
綁定預設執行的Plugin,請參考如下各階段說明,內置綁定請參考官網
validate
:檢查專案是否正確、資訊是否完整。例如確認pom.xml文件是否正確compile
:編譯專案的source codetest
:使用合適的單元測試框架運行測試。這些測試代碼不會被打包或部署package
:接受編譯好的代碼,打包成可發布的格式,例如JAR、EAR、WARverify
:針對整合測試的結果,進一步檢查品質標準是否符合install
:將包安裝至本地倉庫,以讓其它項目依賴deploy
:將最終的套件複製到remote的倉庫,以讓其它開發人員與項目共享或部署到服務器上運行Clean生命周期處理清理的工作,當你程式修改後需要重新將前一次compile的結果處理時可以執行他
clean
:移除所有上一次build生成的文件Site生命周期負責專案訊息的構建
site
:生成項目的站點專案訊息文件site-deploy
:將生成的站點專案訊息文件部署到特定的服務器上我們可以從官網看到Lifecycle的各個phase對應綁定什麼樣的plugin goal在執行,但是還是會很好奇的想看看它寫在哪邊
本題我們以Apache Maven AntRun Plugin,他是一個舊時代的構件工具,這個Plugin可以幫我們執行Ant任務,當然如果你有build.xml文件可以設定路徑去執行他。我們設定讓他顯示console訊息就好
<executions>
:設定要執行的任務是什麼<phase>
:設定在哪個階段執行<goal>
:設定要執行的Plugin目標<configuration>
:設定要傳給Plugin的參數修改pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo> yaya my binding ant plugin running</echo>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
試著找先前的quick-start的專案來執行mvn package
本日介紹了Maven的三大Lifecycle,default lifecycle負責頻率最高的構建專案流程,記得你執行哪個phase
會從第一個phase
執行到你的命令phase
,並介紹如何將Plugin綁定在生命週期中執行