2010-03-04 70 views
3

我們有一個大型的多模塊Maven項目。通常的工作方式是檢查你感興趣的幾個模塊,以及他們依賴的其他模塊,使用Maven提供的快照JAR。在IDEA中,有沒有辦法強制重新編排Maven快照?

這似乎大多工作;當我們需要更新快照時,我們只需從「Maven項目」選項卡強制重新導入。但是,重新導入的快照似乎從未被重新編入索引。

重現步驟:

  1. 在一個項目中,檢查/配置依賴於其他模塊的Maven的快照的模塊。
  2. 在單獨的項目中,對其他模塊進行更改,例如,添加一個方法,並將其部署到Maven存儲庫。
  3. 在第一個項目中,更新快照。
  4. 在第一個項目中,編寫一些調用新方法的代碼。

預計:

  • 不麻煩調用新方法。

實際:

  • 方法調用與 「無法解決方法」 的錯誤紅線。但是:
    • 代碼編譯並(通過生成或上下文菜單)
    • 代碼並運行,包括調用新方法

有一些解決這個方法的代碼?這將是很好的擺脫紅線,讓自動完成等工作,並且通常能夠繼續按照你應該的方式使用IDEA。可能相關:我們有Eclipse和IDEA開發者的混合體,爲了解決一些Eclipse/Maven集成的bug,我們在我們的pom.xml文件中設置了快照updatePolicy爲「never」。但是,我期望IDEA設置(快照更新策略:始終更新)覆蓋此設置,除非我誤解設置的作用。 (「Never」看起來似乎違反直覺,但我認爲開發人員是正確的:手動更新依賴關係,就像手動更新VCS源代碼一樣,對於真正的構建,我們有Hudson覆蓋POM設置。重要的是,將它設置爲「從不」會阻止Eclipse免於不必要的總重編譯)

回答

2

有時,點擊「同步」(窗口左上角保存按鈕附近的黃色箭頭)爲我解決了這個問題 - 我認爲它迫使IDEA在文件系統上查找任何更新的JAR文件。可能是文件系統通知中的一個bug ...

(在這種情況下,您的maven項目指向所有正確的JAR,但IDEA沒有重新編制新的JAR文件索引,所以這是文件系統索引問題,而不是Maven項目設置)

+0

自從我張貼這篇文章以來,我已經更換了工作,但是基於IDEA和Maven的最新經驗,我懷疑您是對的 - 如果「同步」無法解決問題,那麼可能會強制重建索引。 –

+0

我很少需要重建索引(假設你的意思是無效的緩存?) – ianpojman

0

對不起,我沒有真正的答案,但我非常懷疑你的問題來自updatePolicy被設置爲永遠不會。你能否澄清爲什麼你認爲這是必要的?如果IDEA設置不能正確覆蓋它,我一點也不會感到驚訝。你可以使用maven幫助插件和有效的pom來查看它是否適合IDEA。

哦,你在()中的理由聽起來很可疑。在Eclipse中我沒有遇到這些問題。你在使用M2Eclipse插件嗎?我認爲「從不」對開發者來說是不正確的。事實上,我相信它應該永遠是開發者......這是默認行爲。

+0

沒有人在這裏問題,直到他們升級到M2Eclipse的2010-02-09版本,但IAM展示了類似的問題。也許這也是我們代碼庫大小的一個因素。 你爲什麼認爲「總是」是正確的?在我看來,這似乎意味着更新您目前沒有工作的任何代碼會被推送給您,無論您是否希望它們,而不是在您希望它們時拉動。如果代碼也處於積極(潛在的不穩定)發展狀態,那麼這似乎是個壞消息。但也許我誤解了這個設置? –

0

我執行以下操作:

打開首選項>構建,執行,部署>生成工具>的Maven>庫

選擇合適的存儲庫(本地),然後點擊更新。

這重新索引和搜索依賴關係jar中新添加的類工作和IntelliJ建議的工件和相關的導入。

相關問題