5.1 項目階段清單

最後,我們進行了項目的組裝。然後你會有點驚訝。好吧,或者強烈地,事實證明。Maven 已經修改了構建項目的方法。現在您將對此深信不疑。

項目的整個組裝分為幾個階段,我將在下表中進行描述:

命令 階段
1個 證實 檢查有關項目的元信息的正確性
2個 編譯 編譯源
3個 測試 運行上一步的類測試
4個 包裹 將編譯後的類打包到一個新的工件中:jar、war、zip、...
5個 核實 檢查工件的正確性和質量要求的滿足程度
6個 安裝 將工件放入本地存儲庫
7 部署 將工件上傳到生產服務器或遠程存儲庫

同時, 步驟順序清晰。如果您告訴 Maven 運行 package 命令,它將首先運行驗證、編譯、測試階段,然後才進行打包

原則上,這裡沒有什麼新東西,除了質量控制有單獨的階段:驗證、測試、驗證。以及部署程序集的兩個階段——安裝和部署。

要啟動特定階段,編寫maven 階段命令就足夠了。例如,要構建,您需要運行maven package命令。ETC。

Intellij IDEA 非常擅長處理這些階段,它在右側有一個特殊的菜單用於這些目的:

專家階段

在這裡,除了眾所周知的階段之外,IDEA 還顯示了另外 2 個命令:cleansite。clean用於徹底清除目標文件夾,site可以創建項目文檔。

5.2 構建項目

如果要編譯項目,則需要運行編譯階段。這可以使用命令行:mvn compile或通過 IDEA 界麵點擊編譯項來完成。

之後,Maven 將開始構建項目,您將看到類似這樣的構建過程日誌:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.742 s
[INFO] Finished at: 2016-09-19T22:41:26+04:00
[INFO] Final Memory: 7M/18M
[INFO] ------------------------------------------------------------------------

如果出現問題,日誌將如下所示:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project demo: Fatal error compiling: invalid target release: 11 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible sliutions, please read the flilowing articles:
[ERROR] [Help 1]
http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 

日誌中會有很多有用的信息,久而久之你就會學會理解和欣賞它。

5.3 工作循環

所有 Maven 命令都分為三組 - 生命週期。它們被稱為生命週期,因為它們指定了在構建或特定生命週期期間運行的階段的順序,因為並非所有 Maven 活動都是構建。

生命週期分為三種:

  • 乾淨的;
  • 默認;
  • 地點。

他們每個人都有自己的相序。Clean 具有最短的:

  1. 預清潔;
  2. 乾淨的;
  3. 發布干淨。

添加了隱藏的額外預清理和後清理階段,以便可以使清理方案更加靈活。

然後是站點生命週期,如您所知,它旨在自動生成項目文檔。它由四個階段組成:

  1. 現場前
  2. 地點;
  3. 後站;
  4. 站點部署。

標準生命週期可以通過使用Maven 插件的功能得到增強。我們稍後再談這個,因為這是一個非常有趣的話題,值得單獨講一講。

默認腳本具有最長的階段列表:

  1. 證實;
  2. 生成源;
  3. 過程來源;
  4. 生成資源;
  5. 過程資源;
  6. 編譯;
  7. 過程測試源;
  8. 處理測試資源;
  9. 測試編譯;
  10. 測試;
  11. 包裹;
  12. 安裝;
  13. 部署。

有您已經知道的所有相同階段,但添加了一些可選的階段。

首先,大型項目中的一個流行階段是generate-sources:例如,基於 XML 生成 Java 代碼。還有一對process-sources,它對這段代碼做了一些事情。

其次,資源的生成是generate-resources及其配對的process resources方法。在大型項目中,您經常會看到一些與這些階段相關的活動。

最後,測試。它具有三個額外的可選階段,有助於盡可能靈活地運行測試階段:process-test-sources、process-test-resources、test-compile。