讀古今文學網 > Maven實戰 > 1.1.3 Maven不僅僅是構建工具 >

1.1.3 Maven不僅僅是構建工具

Java不僅是一門編程語言,還是一個平台,通過JRuby和Jython,我們可以在Java平台上編寫和運行Ruby和Python程序。我們也應該認識到,Maven不僅是構建工具,還是一個依賴管理工具和項目信息管理工具。它提供了中央倉庫,能幫我們自動下載構件。

在這個開源的年代裡,幾乎任何Java應用都會借用一些第三方的開源類庫,這些類庫都可通過依賴的方式引入到項目中來。隨著依賴的增多,版本不一致、版本衝突、依賴臃腫等問題都會接踵而來。手工解決這些問題是十分枯燥的,幸運的是Maven提供了一個優秀的解決方案,它通過一個坐標系統準確地定位每一個構件(artifact),也就是通過一組坐標Maven能夠找到任何一個Java類庫(如jar文件)。Maven給這個類庫世界引入了經緯,讓它們變得有秩序,於是我們可以借助它來有序地管理依賴,輕鬆地解決那些繁雜的依賴問題。

Maven還能幫助我們管理原本分散在項目中各個角落的項目信息,包括項目描述、開發者列表、版本控制系統地址、許可證、缺陷管理系統地址等。這些微小的變化看起來很瑣碎,並不起眼,但卻在不知不覺中為我們節省了大量尋找信息的時間。除了直接的項目信息,通過Maven自動生成的站點,以及一些已有的插件,我們還能夠輕鬆獲得項目文檔、測試報告、靜態分析報告、源碼版本日誌報告等非常具有價值的項目信息。

Maven還為全世界的Java開發者提供了一個免費的中央倉庫,在其中幾乎可以找到任何的流行開源類庫。通過一些Maven的衍生工具(如Nexus),我們還能對其進行快速地搜索。只要定位了坐標,Maven就能夠幫我們自動下載,省去了手工勞動。

使用Maven還能享受一個額外的好處,即Maven對於項目目錄結構、測試用例命名方式等內容都有既定的規則,只要遵循了這些成熟的規則,用戶在項目間切換的時候就免去了額外的學習成本,可以說是約定優於配置(Convention Over Configuration)。