簡體   English   中英

IDEA如何處理Maven項目中的依賴關系?

[英]How does IDEA handle dependencies in maven project?

我有一個大型的多模塊Maven項目。 當我在IDEA中加載該項目,從nexuses導入所有依賴項,進行“ mvn clean install”以填充本地存儲庫時,對於maven來說一切似乎都可以,因為它能夠成功解決所有問題。 但是在IDEA中,某些類顯示為紅色,提示為“無法解析...”。

重要的一點是,某些遠程類包被包裝到具有相同manifest.mf(因此具有相同工件名稱)的2個或更多jar(而不是通常制作的jar)中。 它們包含相同的程序包,但其中一個保留一半的類,另一個保留最后一個類。 范圍是編譯的。

就像我們在com.pack1包中有2個類A和B一樣,它們被打包到2個jar foo.jar(包含com.pack1.A.class)和foo-impl.jar(包含com.pack1.B.class)中)具有相同的清單。

看來maven可以正確處理此問題,但IDEA卻不能:在項目的結構中,僅存在jar-bundle中的一個jar(沒有附加名稱的部分,例如“ -impl”“ -web” )。 因此,某些類(來自其余jar)是紅色的,無法通過ctrl + LMB打開或無法通過ctrl-N找到。 本地m2存儲庫中也只有一個jar(與IDEA的項目設置相同)。

神奇的事情是,IDEA仍然可以通過兩次移位找到丟失的類並按原樣打開代碼(沒有反編譯警告)。 而且,如果我在編輯器中打開此類,則無法項目結構面板上的源代碼滾動 看起來IDEA以某種方式設法將類加載到內存中的類路徑,但不知道在文件系統上的哪里找到對應的jar。 它確實不存在,因為“本地m2存儲庫中也只有一個jar”

所以我的問題是怎么回事 以及如何使IDEA和maven成為朋友,以便它們在處理依賴項時表現相同?
(除了手動將丟失的jar添加到項目結構中)

我嘗試在正確的Maven導航欄上重新導入,使IDEA的緩存無效,清理本地m2存儲庫,從File-> new->現有來源中重新導入整個項目,在Settings-> Build,Execution,Deployment-> Build Tools-中更新存儲庫> Maven->存儲庫,並使用不同的Maven版本。

Maven 3.0.4,IDEA 17.1

首先,請確保在添加新的依賴項后重新導入Maven。 或激活自動導入(右鍵單擊項目-> Maven->重新導入)。

下一篇:Intellij Idea捆綁了Maven。 您可以設置默認使用的那個。

轉到: 設置->構建,執行,部署->構建工具-> Maven

在Maven主目錄中,選擇您的Maven主文件夾並保存。 從現在開始,intellij將使用與您在系統中相同的Maven。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM