您當前的位置:首頁 > 舞蹈

Maven 編譯與JDK版本

作者:由 一名 發表于 舞蹈時間:2018-03-13

Maven命令的執行需要依賴JDK;

Maven的編譯更是離不開jdk;

能否編譯成功、編譯的結果都和JDK版本息息相關。

場景說明:

我現在系統裡面 安裝了JDK版本1。6、版本1。7、版本1。8和maven 版本3。1。0。

預設的JDK版本是1。7。

問題點:

1、 系統中maven依賴的是哪個JDK版本?

2、 系統中maven 編譯專案的時候使用的是哪個JDK版本?

3、 如果現在系統預設的JDK版本是1。7

a) 現在我有一個特殊專案需要使用JDK版本1。6才能正常編譯,需要如何設定。

b) 如果JDK版本1。6系統中沒有安裝,maven編譯的時候會自動去中央倉庫下載依賴嗎?或者 檢視沒有版本1。6會使用預設的JDK版本1。7?或者編譯失敗?

4、 如果預設的jdk版本是1。7,全域性指定了maven編譯的jdk版本是1。6,特殊專案(special-pro)maven編譯指定的JDK版本是1。8。那麼專案special-pro使用maven編譯的時候會出現什麼狀況?

a) 編譯失敗

b) 使用預設的jdk版本1。7

c) 使用全域性指定的編譯jdk版本1。6

d) 使用專案中指定的編譯jdk版本1。8

一 maven工程指定編譯的JDK版本。

場景:工作空間內大部分專案使用JDK1。7編譯,其中A專案特殊需要使用JDK1。6編譯。

解決方法:

首先 ,需要在~/apache-maven-3。1。0/conf/settings。xml 檔案中設定變數。

為了提高可維護性,同時方便其他專案的引用,建議系統內安裝的各個版本的JDK路徑存放在settings。xml檔案中。

Maven 編譯與JDK版本

Maven 編譯與JDK版本

注:如果不寫activeprofile ,這些變數的設定是不生效的。

其次Pom。xml檔案需要如下配置:

Maven 編譯與JDK版本

注意:

導致編譯失敗的情況

a) 標籤javac的路徑如果是錯誤的、無效的會導致編譯失敗。

b) < source >的版本號和實際設定的JDK版本號對應不上會導致編譯失敗。

導致版本設定不生效的情況

1、 如果設定了< source

>和,不設定 javac的路徑,設定不生效,編譯則會使用系統預設的JDK,能夠編譯成功。

2、 想要生效,設定生效,必須設定為true。否則不生效。

3、 只有同時正確設定時,才能生效。

正確設定了,沒有設定也能使用指定版本正確編譯。雖然列印的引數是預設的1。5。

二 全域性指定JDK版本。

場景:開發人員小a的本地專案大部分使用JDK1。8,小a想要maven編譯的時候預設就使用JDK1。8。這個可以給maven的settings。xml檔案設定一個預設的JDK版本。

Maven 編譯與JDK版本

Maven 編譯與JDK版本

Settings。xml檔案指定了正確的javac路徑後,專案編譯就會使用指定的JDK版本

三 全域性的settings。xml檔案裡面指定了JDK版本之後,工程的pom。xml檔案裡面又指定另外一個JDK版本。

這個時候JDK版本優先順序是:

工程pom.xml指定的版本 > 全域性settings.xml檔案指定的版本 >系統執行預設的JDK版本。

注意:

1、如果工程pom。xml檔案裡面指定的javac路徑是錯誤的,編譯失敗,不會自動尋找全域性的。

2、如果pom。xml只指定了沒有指定,編譯的時候exectable 是全域性指定的JDK。

四 沒有指定JDK版本

編譯會使用預設的JDK版本,預設是1。5。

Maven 編譯與JDK版本

如果有問題,歡迎大家指出,我們共同學習。

標簽: jdk  版本  編譯  Maven  XML