M2_HOME、MAVEN_HOME 和使用 PATH 變數之間的差異
1. 概述
作為 Apache Maven 安裝過程的一部分,我們需要配置各種環境變數以確保 Maven 安裝順利進行。在本教程中,我們將了解其中三個變數: M2_HOME 、 MAVEN_HOME和PATH 。我們將看到它們如何影響我們的安裝,這取決於我們使用的 Maven 版本。
讓我們先看看如何配置最早版本的 Maven。
**注意:Apache Maven 1.x 和 Maven 2.x 已達到其生命週期。第 2 節和第 3 節演示的配置僅用於說明目的,並不提倡使用它們。
**
2. Maven 1.x
驗證並提取現成的二進位發行版 Maven 檔案後,讓我們導航到 Maven 目錄的bin資料夾。從這裡,我們可以執行 Maven 命令來查看它是否開箱即用:
$ maven -v
此命令將產生一個輸出,表示我們缺少所需的環境變數:
MAVEN_HOME must be set
在這裡,Maven 告訴我們, MAVEN_HOME環境變數不僅指示 Maven 目錄提取到的位置,而且還是一個強制變數。
將此環境變數加入我們的系統後,讓我們執行前面的命令:
$ maven -v
我們會得到這樣的結果:
__ __
| \/ |__ _Apache__ ___
| |\/| / _` \ V / -_) ' \ ~ intelligent projects ~
|_| |_\__,_|\_/\___|_||_| v. 1.1
這表明我們的系統將與下載的 Maven 版本一起使用。
接下來,讓我們考慮一下這個變數的用法在 Maven 2.x 中是如何變化的。
3. Maven 2.x
驗證並提取下載的 Maven 二進位檔案後,讓我們導航到bin目錄並運行版本資訊命令:
$ mvn -v
與上一節不同,Maven 2.x 不會抱怨未設定MAVEN_HOME或M2_HOME變量,因為版本 2 使該變數成為可選的。此命令給出類似於以下內容的輸出:
Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200)
Java version: 1.8.0_412
Java home: /home/.sdkman/candidates/java/8.0.412.fx-librca/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux"
在 Maven 2.x 中, MAVEN_HOME變數被重新命名為M2_HOME 。這表示要指定Maven 2.x的安裝位置,我們需要設定M2_HOME環境變數。
接下來,我們來看看最新版本的Maven。
4. Maven 3.x
驗證並提取二進位檔案後,我們導航到bin目錄並再次查詢版本資訊:
$ mvn -v
此命令給出類似於以下內容的輸出:
Apache Maven 3.9.8 (36645f6c9b5079805ea5009217e36f2cffd34256)
Maven home: /home/dev-tools/apache-maven-3.9.8
Java version: 1.8.0_412, vendor: BellSoft,
runtime: /home/.sdkman/candidates/java/8.0.412.fx-librca/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux"
與版本 2 類似,Maven 3.x 使MAVEN_HOME變數成為可選的。在Maven 3.x中, MAVEN_HOME取代了M2_HOME作為用於指定安裝位置的變數。
5. 比較總結
讓我們以表格形式總結一下我們所討論的內容:
| Maven版本 | 變數名 | 是否需要 |
|---|---|---|
| 1.x | MAVEN_HOME |
是的 |
| 2.x | M2_HOME |
選修的 |
| 3.x | MAVEN_HOME |
選修的 |
6.設定PATH變數
在前面的部分中,我們從安裝的 bin 目錄中執行了 Maven 命令。為了使我們能夠從bin目錄外部執行 Maven 命令,我們需要將其新增至我們的PATH環境變數。 Maven 安裝教學課程展示如何針對不同的作業系統執行此操作:Windows、Linux 和 macOS。
因此,我們應該能夠從系統中的任何位置執行 Maven 命令。
七、結論
在本教程中,我們檢查了影響 Maven 安裝的三個環境變數: M2_HOME 、 MAVEN_HOME和PATH 。我們看到M2_HOME和MAVEN_HOME指的是Maven安裝目錄,這取決於版本。此外,我們還解釋瞭如何設定PATH變數使 Maven 指令可以從系統中的任何位置使用。