錯誤訊息
-Dmaven.multiModuleProjectDirectory system property is not set.
Check $M2_HOME environment variable and mvn script match.
原因分析
Eclipse 內建的 m2e 外掛與獨立安裝的 Maven 版本不匹配,導致啟動參數 maven.multiModuleProjectDirectory 未正確傳遞。常見於:
- Eclipse 使用內建 Maven,但專案指向外部 Maven 安裝目錄。
- Maven 版本過新(如 3.3.x 早期版本)與 m2e 相容性問題。
- 環境變數
M2_HOME 指向錯誤路徑或未設定。
解決方案(按推薦順序)
方法一:統一使用 Eclipse 內建 Maven(最簡單)
- Window → Preferences → Maven → Installations
- 勾選 Embedded (預設),取消勾選外部安裝路徑。
- 同頁面 User Settings 指向正確的
settings.xml。
- Apply and Close → 專案右鍵 Maven → Update Project。
方法二:正確配置外部 Maven
- 確認
M2_HOME 環境變數指向 Maven 安裝根目錄(含 bin/mvn)。
- Eclipse Preferences → Maven → Installations → Add 選擇該目錄。
- 勾選該安裝項為預設。
- 確認
%M2_HOME%\bin 在系統 PATH 中。
- 重啟 Eclipse。
方法三:升級/降級 Maven 版本
- Maven 3.3.1 為舊版本,建議升級至 3.9.x (長期支援) 或至少 3.6.3。
- 舊版本 m2e (Eclipse 2019-06 前) 可能不支援新版 Maven,需同步更新 Eclipse 或 m2e 外掛。
方法四:手動添加 VM 參數 (臨時繞過)
Run Configurations → Maven Build → JRE 頁籤 → VM arguments 添加:
-Dmaven.multiModuleProjectDirectory=${project_loc}
但此為治標不治本,不建議長期使用。
最佳實務建議
- 優先使用 Eclipse 內建 Maven,避免版本衝突,除非專案強制需特定 Maven 版本。
- 團隊專案請在
.mvn/maven.config 或 pom.xml <properties><maven.version> 鎖定版本,配合 Maven Wrapper 確保一致性。
- 避免使用 Maven 3.3.x 等非 LTS 版本,穩定性較差。
參考資源
統一 Maven 環境、使用 Wrapper、保持 Eclipse 與 m2e 更新,可徹底避免此類建置環境問題。