Maven 的官方網站:https://maven.apache.org/
來自 Maven 官網的對于 Maven 是什么的描述:
Apache Maven is a build tool for Java projects. Using a project object model (POM), Maven manages a project’s compilation, testing, and documentation.
翻譯過來就是:Apache Maven 是一款用于 Java 項目的構建工具。通過使用項目對象模型(POM),Maven 能夠管理項目的編譯、測試以及文檔編制工作。
目前 Maven 是 Java 中最主流的構建工具,Gradle 現在也非常火,SpringBoot 現在使用 Gradle 編譯項目,但是 Gradle 比較復雜,沒有 Maven 普及率廣,可以說 Maven 對于 Java 程序員來說是必學的。
一句話總結:Maven 就像是 Java 項目的“管家”,它幫你把項目從源碼一步步變成可運行的軟件。
為什么需要 Maven
想象一下,你正在開發一個 Java 項目。這個項目需要用到很多其他庫(比如處理 JSON 的 Gson 庫、網絡請求的 HttpClient 庫),并且你還需要:
- 編譯你的源代碼(
.java
文件)。 - 將編譯好的類文件(
.class
文件)打包成 JAR 或 WAR 文件。 - 運行單元測試來確保代碼沒有問題。
- 生成項目文檔和報告。
在沒有 Maven 之前,開發者需要手動去下載各種 JAR 包,然后放到項目的 lib
文件夾下。如果依賴的庫又依賴其他庫(傳遞依賴),就會變得非常麻煩。
Maven 的出現解決了這些痛點:
- 自動下載依賴,不再手動復制 JAR 包
- 清晰的項目結構,統一的目錄規范
- 標準化的構建流程,團隊協作更方便
- 提供豐富的插件支持,比如單元測試、文檔生成、打包部署等
Maven 的核心功能
依賴管理(Dependency Management)
這是 Maven 最強大的功能之一。你只需要在項目的 pom.xml
文件中聲明你需要的依賴(比如 Gson),Maven 就會:
- 自動從中心倉庫下載這些依賴,并緩存到你的本地倉庫。
- 自動處理依賴的依賴(也叫傳遞性依賴)。例如,如果你依賴
A
,而A
又依賴B
和C
,Maven 會自動為你下載B
和C
。
有了 Maven,你再也不需要手動管理一堆 JAR 包了,這大大簡化了項目配置和管理。
標準化項目結構
Maven 規定了一個標準的項目目錄結構。例如:
your-project/
├── src/
│ ├── main/
│ │ ├── java/ # 存放你的源代碼
│ │ └── resources/ # 存放配置文件、圖片等資源文件
│ └── test/
│ ├── java/ # 存放你的測試代碼
│ └── resources/ # 存放測試用到的資源文件
└── pom.xml # 項目對象模型文件
這種結構讓不同團隊成員在接手新項目時能快速上手,因為它遵循了統一的約定。
標準化的構建生命周期
Maven 定義了一套標準的構建生命周期,它包括一系列階段(phase),比如:
validate
: 驗證項目是否正確。compile
: 編譯源代碼。test
: 運行單元測試。package
: 將編譯好的代碼打包(通常是 JAR 或 WAR)。install
: 將包安裝到本地倉庫,供其他本地項目使用。deploy
: 將包部署到遠程倉庫。
你可以通過簡單的命令,如 mvn clean install
,來執行整個生命周期,而不需要關心每個階段的底層細節。