2009-10-23 30 views
34

當我運行mvn clean時,我的項目中有9次出現構建錯誤。我必須多次執行mvn clean,直到構建錯誤消失。其他人是否有這種體驗?有什麼方法可以在Maven中解決這個問題嗎?如果不是,你如何解決它?我寫了一個刪除目標文件夾的bat文件,效果很好,但是當你在處理多個項目時,這是不實際的。我正在使用Maven 2.2.1。爲什麼Maven的mvn並沒有第一次清理?

[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Failed to delete directory: C:\Documents and Settings\user\My Documents\software-developm 
ent\a\b\c\application-domain\target. Reason: Unable to delete directory C:\Documen 
ts and Settings\user\My Documents\software-development\a\b\c\application-domai 
n\target\classes\com\a\b 

[INFO] ------------------------------------------------------------------------ 
[INFO] For more information, run Maven with the -e switch 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 6 seconds 
[INFO] Finished at: Fri Oct 23 15:22:48 EDT 2009 
[INFO] Final Memory: 11M/254M 
[INFO] ------------------------------------------------------------------------ 
+3

'mvn clean'運行良好,您的操作系統不會> :) – 2009-10-23 19:58:27

回答

33

這可能是因爲您的IDE或其他進程持有「目標」文件夾,並阻止maven刪除它。

+1

我使用Eclipse與Maven集成,但由於某些原因,我仍在使用命令行進行清理和構建。我會嘗試在Eclipse中清理,看看我是否得到相同的結果。 – 2009-10-23 19:22:18

+0

我刷新了日食中的項目,它的工作 – 2013-12-27 15:47:09

+0

EdizTürkoğlu下面的評論是導致此問題的Windows機器上的主要進程之一。我可以確認這是在Windows 7上使用Netbeans 8.0的情況。暫停索引對我有用 – Narrim 2014-11-20 01:32:45

3

當您在Windows上時,您經常遇到此問題,因爲Windows不會(通常)允許您刪除正在使用的文件。除了(痛苦地)經歷所有Maven配置之外,最好的選擇就是不要在Windows上構建(例如,使用Linux/Solaris/VM)。

0

這是因爲你阻止目標目錄(打開文件或進入目標目錄的(子)目錄,或任何其他進程/應用程序使用該目錄中的文件)。如果Windows刪除命令也抱怨這不是maven錯誤。

2

我猜你正在文本編輯器中打開文件或在目標中的目錄上打開一個shell。如果某個進程鎖定了文件或文件夾,Windows將不會讓您刪除它。

如果您運行一個像wholockme這樣的工具,您將能夠看到哪個進程正在鎖定該文件。

1

我有從哈德森運行生成相同的問題。

使用handle.exe(來自Sysinternals)我發現一個java.exe任務有一個活動的文件句柄到生成的jar文件。

如果我殺了這個任務,下一次構建成功。 但是,這個成功的構建之後的下一個構建會再次出現相同的錯誤。

即使構建任務成功,它似乎不會正常終止並保持打開文件。

我是哈德森的初學者,起初我沒有這個問題。 然後我玩了一些插件,後來出現這個問題並且可以重現。

我停用了幾乎所有的插件(只保留一些像顛覆和聲納這樣的重要內容),現在問題似乎已經解決了。

希望這有助於有點...

11

問題是日食是不斷閱讀你的Maven項目的目錄和文物,並不可避免地其中之一,當你正在打掃打開。

最好的方法是從Eclipse插件運行maven clean(我使用m2eclipse,這似乎工作正常)。

這種作品的另一種方法是運行mvn clean,將maven.clean.failOnError標誌設置爲false。如果通常運行兩次,這足以使一切正常工作,例如

mvn clean -Dmaven.clean.failOnError=false && mvn clean -Dmaven.clean.failOnError=false 

您可能會想要從項目菜單中關閉eclipse的「自動構建」,而您這樣做。

+0

此解決方案適用於我。謝謝。 – 2011-11-17 13:56:49

+0

沒有爲我工作。現在顯示未刪除文件名的列表。 – 2016-10-07 04:41:10

1

嘗試禁用Windows索引服務。

13

關閉窗口搜索服務上的Win7我

+0

它也適用於我。 – 2011-07-14 01:57:44

0

工作我發現的是,Java開發與Maven的窗口7個時奮鬥的源代碼是C驅動器上。將我的代碼移動到另一個驅動器。即使是邏輯驅動器也能正常工作,驅動器不一定需要成爲不同的物理硬盤驅動器。

-5

該解決方案重新啓動Windows 7,它有助於釋放資源。

1

我有同樣的問題。我關閉了Eclipse並查看了任務管理器中正在運行的進程,並看到一個名爲「Java.exe」的程序,它通常不會運行,所以我結束了它,然後再次運行「mvn clean」。它應該正確刪除文件並正常工作。

18

這主要是由Windows索引造成的。不包括目標文件夾或.jar索引的擴展將解決此問題。我的最佳做法是排除.jar的延伸。

要排除的目標文件:

  1. 點擊Windows圖標/開始菜單
  2. 類型索引在搜索框中,點擊索引選項
  3. 然後在修改按鈕點擊調查目錄索引。
  4. 刪除支票目標文件夾。

要excluse所有的.jar文件

  1. 點擊Windows圖標/開始菜單
  2. 類型索引在搜索框中,點擊索引選項
  3. 然後點擊按高級按鈕。
  4. 經過文件類型選項卡。
  5. 在列表中,找到jar並取消選中它。
+0

一旦「目標」未選中,問題就會解決。但是任何'.jar'文件都不能被取消選中,因爲我的情況下禁用了.jar文件。 – NaaN 2014-02-04 04:05:12

+0

我確認這個解決方案立即使用maven和netbeans 8.0工作 - 我沒有看到任何理由允許Windows索引開發.java文件。我真的不推薦使用Windows搜索來更好地使用IDE查找這些文件中的內容 – Narrim 2014-11-20 01:30:53

0

如果您不想更改Windows索引設置,也可以簡單地暫停它。

-1

您正在運行的應用程序應該停止。看起來應用程序仍在運行,而您正在嘗試清理應用程序。

2

Windows索引保存JAR文件的服務,應用程序服務器或IDE是根本原因。最好的解決方案是禁用Windows搜索服務或從索引中排除JAR文件。其他(不完美)選項mvn clean || mvn clean。只有第一個失敗時,雙管道符號纔會運行第二個命令。

有關如何查找和刪除Windows寫入鎖(建議使用ProcessExplorerUnlocker)的詳細信息,請參閱Releasing Windows file share locks

+0

這個答案比批准的更有價值,但建議禁用Windows搜索服務作爲第一個選項可能不會滿足很多人;) – 2015-09-27 07:15:39

1

在我的情況下,有一個java進程正在執行surefirebooter.jar,它是做Maven JUnit測試的插件。 所以你可以簡單地打開任務管理器並殺死java進程。

0

應關閉所有文件中的目標,對我來說我使用m2eclipse的直接比較好,你也可以嘗試乾淨MVN = -Dmaven.clean.failOnError假

2

以下是我的發現 -

除了從IDE堅持到jar,有時你會有一些java進程,這也會導致這種情況。在任務管理器中查找任何「java.exe」/「javaw.exe」進程並殺死它。

它幫助我解決了這個問題。

相關問題