當前位置: 首頁>>係統&架構>>正文


在IntelliJ IDEA中導入Maven的依賴項

IntelliJ IDEA 11導入依賴的問題

需要從subversion導入一個項目 – 這是一個maven項目。但是我在處理maven庫依賴時遇到了問題,這導致不能自動地包含所有的maven依賴項 – 當我打開該類時,IDEA顯示依賴錯誤。問題如下圖所示:

java,maven,intellij-idea,maven-3

想讓所有的依賴關係被自動添加 – 這是否可行?還是說必須要通過所有的類文件來識別和添加maven依賴?

經過一些嘗試,做了一些修改之後,發現了解決上述問題的一種可行方式,如下圖所示:

java,maven,intellij-idea,maven-3

但是,它不會提前引入和檢查新的依賴關係嗎?!…在intelliJ中是否有任何地方可以設置:自動導出依賴到classpath?

推薦的解決辦法

隻要POM兼容並且所有依賴關係可用,IntelliJ會自動將所有依賴項添加到項目的類路徑(classpath)中。

當將Maven項目導入IntelliJ時,通常會提示是否要為Maven項目配置自動導入(Auto-Import)。這意味著如果對POM做任何更改,這些更改也會自動加載。

可以按如下方式啟用此功能:進入文件>設置> Maven>導入,有一個複選框,顯示“自動導入Maven項目”。

如果上述辦法無效,建議做一個完整的clean-up並重新開始:

  • 關閉項目窗口(和IntelliJ)並刪除所有的*.iml文件和所有的.idea文件夾(每個模塊應該有一個)

  • 從命令行運行mvn clean install

  • 重新導入(Re-import)將項目引入IntelliJ,注意啟用自動導入(auto-import)的提示

針對IntelliJ 2016更新的不同細節處理:

導入Maven項目的自動設置功能已被移動到IntelliJ首選項的構建,執行,部署>構建工具> Maven>導入中。

次佳解決辦法

解決方法是:到文件[菜單] – >設置 – > maven – >導入,取消選中“使用maven3導入項目”

參考:http://youtrack.jetbrains.com/issue/IDEA-98425(可能還有其他一些思路)

更新:對於IntelliJ 15,已經沒有“使用maven3導入”選項可用了。原因是有時IntelliJ“不能正確解析maven依賴關係”,亦即,如果不能解析其中的任意一個,它就會放棄所有這些依賴。可以通過打開maven項目工具窗口(查看菜單 – >工具Windows – > Maven項目)來判斷是否是這種情況。展開一個maven項目及其依賴項,如果依賴關係都以紅色加下劃線,那麽問題來了:

java,maven,intellij-idea,maven-3

可以通過鼠標懸停在項目名稱上,可以看到真正的失敗原因。

java,maven,intellij-idea,maven-3

在上麵的實例中,顯示“問題:沒有可用的XXX的版本”或“無法讀取artifact org.xy.z的描述符”,參考:https://youtrack.jetbrains.com/issue/IDEA-128846https://youtrack.jetbrains.com/issue/IDEA-152555

問題在於,處理一個沒有關聯的pom文件的jar(在maven nexus repo中,也是本地存儲庫)。如果大家遇到了同樣的問題,“如果實際上不需要代碼中使用那個jar中的類(例如隻有一個傳遞性的maven依賴),那麽你實際上可以從pom 注釋掉該依賴(臨時),到maven項目重新加載,然後取消注釋。

第三種解決辦法

嘗試從IntelliJ IDEA的Maven Projects麵板中重新導入(Re-Import)項目。這應該會自動下載並配置pom.xml中定義的所有依賴項。

如果由於某種原因在IDEA中下載不能正常工作,請從命令行嘗試mvn install,看看是否可以獲取依賴關係。

當然,所有必需的依賴項和任何自定義存儲庫都必須直接在pom.xml文件中定義。

第四種思路

對於IntelliJ 2016-2.4(以及其他new-ish版本):

視圖>工具Windows> Maven項目

在新顯示的工具欄中,選擇Maven設置(工具集的圖標)。

當此屏幕打開時,展開Maven菜單,然後單擊導入(‘Importing’)

然後單擊“自動導入Maven項目”。另外,還要確保“JDK for Importer”選項與您使用的JDK版本相匹配。

單擊確定。現在到pom.xml中的紅色依賴,選擇紅色的燈泡,然後點擊’更新Maven索引’。

第五種思路

導入項目時,應該選擇pom.xml而不是項目目錄。

第六種思路

當創建一個新項目時,隻需選擇以下選項:

…從外部模型導入項目

在現有外部模型(Eclipse,Maven …)上創建IDEA項目結構…

在上述問題的情況下,可以關閉項目,隻需創建一個新項目。選擇之前舊項目的目錄,這將覆蓋它,使其成為一個Maven項目。

補充

如果導入相同的路徑多次,則導入Maven依賴項可能會不起作用。這可能自動發生於導入現有的maven項目之後。出現這種情況的具體原因還不清楚按,但這應該是一個錯誤。

例如,如果項目是

hibernate
  src/main
  src/test

這三個路徑可能被導入為頂級節點:

hibernate
src/main
src/test

如果是這種情況,依賴關係似乎是正確的,但是在刪除多餘路徑(本例中為src/mainsrc/test)之前,它們將不會被使用。完成此操作後,刷新並單擊Build>重建項目。 IDEA將提取依賴關係。

此問題的一個症狀是,當手動檢查庫(問題的第二個屏幕截圖)時,IDEA會警告有重複的路徑。

有幾種方法可以讓重新讀取依賴關係在需要的時候使用。如果訪問“Maven Projects”選項卡,則在該選項卡的左上方有一個“Reimport All Maven Projects”圖標。如果懷疑IDEA已經搞亂了依賴關係,可以點擊文件>讓緩存失效。

本文翻譯整理自:

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/3612.html,未經允許,請勿轉載。