什么是Maven?
介紹
Maven原是一個意第緒語單詞,意思是知識的累加器,最初是為了簡化Jakarta Turbine項目中的構建過程而開始的。這個工程有幾個項目組成,並且每個項目都有自己的Ant構建文件,這些文件都略有不同,當時JAR都是通過簽入CVS進行管理。我們需要一種標准的方法來構建項目,明確定義項目的內容,發布項目信息的簡便方法以及跨多個項目共享JAR的方法。
為了這個目錄我們開發了一個工具,就是現在可用於構建和管理任何基於Java的項目工具Maven。我們希望我們已經創建了一些東西(Maven),使Java開發人員的日常工作變得更加容易,並且通常有助於理解任何基於Java的項目。
Maven的目標
Maven的主要目標是讓開發人員在最短的時間內理解開發工作的完整狀態。為了實現這一目標,Maven試圖處理以下幾個方面的問題:
- 使構建過程變得簡單
- 提供統一的構建系統
- 提供優質的項目信息
- 提供最佳實踐開發指南
- 允許透明遷移到新功能
使構建過程變得簡單
雖然使用Maven並不能消除對底層機制的了解,但Maven確實提供了很多屏蔽細節來確保使用過程變得簡單。
提供統一的構建系統
Maven允許項目使用其項目對象模型(POM)和一組使用Maven由所有項目共享的插件進行構建,從而提供統一的構建系統。一旦您熟悉了Maven項目的構建方式,您就會自動了解所有Maven項目的構建方式,從而在嘗試在許多項目中應用它,它給我們工作節省了大量時間。
提供優質的項目信息
Maven提供了大量有用的項目信息,這些信息部分來自您的POM,部分來自您項目的來源。例如,Maven可以提供:
- 更改直接從源代碼管理創建的日志文檔
- 交叉引用的來源
- 郵件列表
- 依賴列表
- 單元測試報告包括報道
隨着Maven的改進,所提供的信息集將得到改善,所有這些對Maven的用戶都是透明的。
其他產品也可以提供Maven插件,以允許他們的項目信息以及Maven提供的一些標准信息,所有這些仍然基於POM。
提供最佳實踐開發指南
Maven旨在收集最佳項目實踐開發原則,並使指導項目朝這個方向變得容易。
例如,單元測試的規范,執行和報告是使用Maven的正常構建周期的一部分。目前的單元測試最佳實踐被用作指南:
- 將測試源代碼保存在單獨但並行的源代碼樹中
- 使用測試用例命名約定來定位和執行測試
- 讓測試用例設置他們的環境,而不是依賴於自定義構建以進行測試准備。
Maven還旨在協助項目工作流程,例如發布和問題管理。
Maven還建議了一些關於如何布局項目目錄結構的指南,這樣一旦你學習了布局,你就可以輕松地應用到任何其他使用Maven的項目和相同的默認值。
允許透明遷移到新功能
Maven為Maven客戶端提供了一種簡單的方法來更新他們的安裝,以便他們可以利用對Maven本身所做的任何更改。
出於這個原因,從第三方或Maven本身安裝新的或更新的插件已經變得微不足道了。
什么是Maven?
您可能聽說過Maven的以下一些事情:
- Maven是一個站點和文檔工具
- Maven擴展了Ant以允許您下載依賴項
- Maven是一組可重用的Ant scriptlet
雖然Maven做了這些事情,正如你在上面的“什么是Maven?”一節中所讀到的,這些並不是Maven所擁有的唯一功能,它的目標是完全不同的。
Maven確實鼓勵最佳實踐,但我們意識到由於歷史原因,某些項目可能不符合這些理想。雖然Maven的設計靈活,在某種程度上,在這些情況下和不同項目的需求,但它不能滿足每一種情況,而不會妥協其目標的完整性。
如果你決定使用Maven,並且有一個不可重組的不尋常的構建結構,你可能不得不忘記一些功能或完全使用Maven。
