2011-09-13 60 views
123

最近,Apache Maven似乎有緩存問題。使用Windows Vista或Windows 7在我們的項目上執行全新安裝有時會產生具有與先前構建相同數據的構件,儘管應更新了較新的構件文件。你如何清除Apache Maven的緩存?

有什麼辦法可以清除這個緩存,迫使maven總是觸發一個應該構建的本地工件的乾淨構建?

特別是,我們遇到了使用war插件構建webapp的問題。 Maven版本是3.0.3。戰爭插件版本是2.1.1。

+2

您是否嘗試過使用'-U'標誌來更新工件? –

+2

你能提供更多細節嗎?這些家屬是否沒有在戰爭中得到更新?如果是這樣,受養人是否有SNAPSHOT版本? – Raghuram

+0

這是一個多模塊項目嗎?你有沒有檢查過depdendent模塊的版本號?你能重現嗎? 'mvn clean install'把新的工件放到本地倉庫中? – palacsint

回答

130

手工從c:\Users\username\.m2\repository中刪除工件(或完整的本地回購)。

+4

試過了,沒有工作。 (還是)感謝你的建議。 – MetroidFan2002

+124

這怎麼能不行? –

+0

@ om-nom-nom:感謝編輯! – palacsint

10

您是否在settings.xml中檢查/更改了updatePolicy存儲庫的設置。

此元素指定更新嘗試發生的頻率。 Maven會將本地POM的時間戳(存儲在存儲庫的 maven-metadata文件中)與遠程進行比較。選項是:始終,每天 (默認),間隔:X(其中X是以分鐘爲單位的整數)或從不。

嘗試將其設置爲always

+1

可能的幫助處理這個......我沒有' updatePolicy>'在我的pom.xml中,但是有'' –

5

這適用於Spring Tool Suite v 3.1.0.RELEASE,但我猜測它也可以在Eclipse上使用。

通過執行在/username/.m2目錄,重新索引手工刪去僞像(如由上述palacsint說明)的文件後執行以下操作:

轉至Windows的>首選項 - > Maven- >用戶設置菜單。

單擊「Local Repository」文本框旁邊的「Reindex」按鈕。點擊「應用」,然後「確定」,你就完成了。

112

要清理本地緩存,請嘗試使用依賴插件。

  1. mvn dependency:purge-local-repository:這是嘗試刪除本地存儲庫文件,但它總是會在刪除東西后填充本地存儲庫。
  2. mvn dependency:purge-local-repository -DreResolve=false:這可以避免重新解析依賴關係,但似乎仍然有時會進入網絡。
  3. mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false:這是由PawełPrażak添加,似乎很好。如果你想讓本地倉庫清空,我會使用第三個倉庫,如果你只是想拋出本地倉庫並重新獲得依賴關係,那麼我會使用第三個倉庫。
+4

它們有什麼區別? –

+8

第一種是嘗試刪除本地存儲庫文件,但它總是會在刪除東西后填充本地存儲庫。第二個避免了重新解決依賴關係,但似乎仍然有時會進入網絡。第三個由PawełPrażak添加,似乎運作良好。如果你想讓本地倉庫清空,我會使用第三個倉庫,如果你只是想拋出本地倉庫並重新獲得依賴關係,那麼我會使用第三個倉庫。 –

+0

我們在哪裏執行此操作? CMD不知道mvn ... – deadManN

0

我會做到以下幾點:

mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end 

的標誌告訴行家不要試圖解析依賴或打網絡。 刪除您在本地看到的內容。

爲了好的措施,忽略錯誤(--fail-at-end)直到最後。這對於有些依賴或者依賴於內部存儲庫的項目來說有時很有用(它發生了)。

+0

對不起,我不明白這個問題:/ –