Maven的概念
- Maven是一個一鍵式的自動化的構建工具。
- Maven 是 Apache 軟件基金會組織維護的一款自動化構建工具,專注服務于Java 平臺的項目構建和依賴管理。Maven 這個單詞的本意是:專家,內行。
- Maven 是目前最流行的自動化構建工具,對于生產環境下多框架、多模塊整合開發有重要作用,Maven 是一款在大型項目開發過程中不可或缺的重要工具。
為什么要使用Maven
我們知道,項目開發不僅僅是寫寫代碼而已,期間會伴隨著各種必不可少的事情要做,例如:
- 我們需要引用各種 jar 包,尤其是比較大的工程,引用的 jar 包往往有幾十個乃至上百個,每個都要到不同的官網去下載,而且每次用到的 jar 包,都需要手動引入工程目錄,而且經常遇到各種讓人抓狂的 jar 包沖突,版本沖突,Maven可以自動下載jar包及依賴包添加到項目中,大大減輕了工作負擔。
- 我們開發的 Java 文件,都是需要將它編譯成二進制字節碼文件。好在這項工作可以由各種集成開發工具幫我們完成,Eclipse、IDEA 等都可以將代碼即時編譯。但有時候我們需要多個模塊同時編譯,就必須要借助于Maven工具了。
- 每個項目或模塊開發過程中都會有 bug,因此寫完了代碼,我們還要寫一些單元測試,然后一個個的運行來檢驗代碼質量,Maven提供了專門的測試插件來實施測試。
- 再優雅的代碼也是要出來賣的。我們后面還需要把代碼與各種配置文件、資源整合到一起,定型打包,如果是 web項目,還需要將之發布到服務器進行調用,這些都可以通過Maven輕松搞定。
總之,Maven是項目開發必不可少的工具。
類似自動化構建工具還有:Gant,Gradle。
項目構建過程
構建(build)是面向過程的(從開始到結尾的多個步驟),涉及到多個環節的協同工作。
構建過程的幾個主要環節:
- 清理:刪除以前的編譯結果,為重新編譯做好準備。
- 編譯:將Java源程序編譯為字節碼文件。
- 測試:針對項目中的關鍵點進行測試,確保項目在迭代開發過程中關鍵點的正確性。
- 報告:在每一次測試后以標準的格式記錄和展示測試結果。
- 打包:將一個包含諸多文件的工程封裝為一個壓縮文件用于安裝或部署。Java 工程對應 jar 包,Web 工程對應war包。
- 安裝:在Maven環境下特指將jar包安裝到本地倉庫中。這樣該項目就可以被其他的maven項目通過依賴的方式引入。
- 部署:將jar包部署到私服上。
Maven的兩大核心功能
項目構建
對項目進行編譯,測試,打包,部署等構建
依賴管理
對jar包的統一管理,Maven提供中央倉庫,私服,本地倉庫解決jar包的依賴和相關依賴的下載。
如下圖所示:包括藍、黃兩個部分分別對應著依賴關系和項目構建兩大核心功能。