首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Maven 編譯失敗「Failed to execute goal maven-compiler-plugin」JAVA_HOME 變數解析問題解決

     編輯:Java 相關知識

問題現象

Maven 專案編譯時報錯:

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1 ...

pom.xml 中配置了 maven-compiler-plugin 並引用 ${JAVA8_HOME} 變數指定 javac 路徑:

<profile>
    <id>custom-compiler</id>
    <properties>
        <JAVA8_HOME>C:\Program Files (x86)\Java\jdk1.8.0_73</JAVA8_HOME>
    </properties>
</profile>

<activeProfiles>
    <activeProfile>custom-compiler</activeProfile>
</activeProfiles>

根因分析

  1. IDE (IntelliJ IDEA) 設定了自訂 settings.xml (例如專案目錄下或自訂路徑)。
  2. Maven 執行時**優先讀取預設路徑** ${maven.home}/conf/settings.xml (安裝目錄) 或 ${user.home}/.m2/settings.xml (用戶目錄)。
  3. 若預設 settings.xml 中**缺少對應 Profile 或未啟用**,${JAVA8_HOME} 解析為空字串,導致 executable 路徑無效,編譯失敗。
  4. 將 ${JAVA8_HOME} 直接替換為絕對路徑即可編譯通過,證實是變數解析失敗。

解決方案 (按推薦順序)

方案一:刪除/重命名 Maven 安裝目錄下的預設 settings.xml (最徹底)

# Windows
rename %MAVEN_HOME%\conf\settings.xml settings.xml.bak

# Linux/Mac
mv $MAVEN_HOME/conf/settings.xml $MAVEN_HOME/conf/settings.xml.bak

強制 Maven 讀取用戶目錄 ~/.m2/settings.xml 或 IDE 指定的自訂設定檔。

方案二:在用戶目錄 ~/.m2/settings.xml 中同步定義並啟用 Profile


    C:/Program Files/Java/jdk1.8.0_73/bin/javac
    true


缺點:專案遷移需修改路徑,不利團隊協作。

方案四:使用 Toolchains (Maven 專業做法)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved