当我在项目中运行 mvn clean 时,我遇到了九次,我遇到了构建错误。我必须多次执行 mvn clean ,直到构建错误消失。有没有人经历过这个?有没有办法在Maven中解决这个问题?如果没有,你如何解决它?我写了一个删除目标文件夹的bat文件,但效果很好,但是当你处理多个项目时这是不实际的。我正在使用Maven 2.2.1。
[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] ------------------------------------------------------------------------
答案 0 :(得分:36)
可能是您的IDE或其他进程正在抓住“target”文件夹并阻止maven删除它。
答案 1 :(得分:19)
这主要是由 Windows索引引起的。从索引编制中排除目标文件夹或 .jar 延期将解决问题。我的最佳做法是排除 .jar 扩展。
要排除目标文件:
要删除所有 .jar 文件:
答案 2 :(得分:13)
关闭Win7上的Window Search服务为我工作
答案 3 :(得分:11)
问题是eclipse会不断地读取你的maven项目中的目录和工件,并且在你清理时不可避免地会打开其中一个。
最好的方法是从eclipse插件运行maven clean(我使用m2eclipse,这看起来效果很好)。
另一种方法是运行mvn clean
并将maven.clean.failOnError
标志设置为false
。如果你经常运行两次就足以使一切正常工作,例如
mvn clean -Dmaven.clean.failOnError=false && mvn clean -Dmaven.clean.failOnError=false
你可能想要在项目菜单中关闭eclipse的“自动构建”。
答案 4 :(得分:3)
以下是我的发现 -
除了IDE 持有jar之外,有时你会有一些java进程也可能导致这个问题。查找任何" java.exe" /" javaw.exe" 在任务管理器中处理并将其删除。
它帮助我解决了这个问题。
答案 5 :(得分:3)
在Windows上经常遇到此问题,因为Windows(通常)不允许您删除正在使用的文件。除了(痛苦地)完成所有Maven配置之外,最好的办法就是不要在Windows上构建(例如使用Linux / Solaris /任何虚拟机)。
答案 6 :(得分:2)
我猜你是在文本编辑器中打开文件,或者在目标中的目录上打开shell。如果某个进程锁定了文件或文件夹,Windows将不允许您将其删除。
如果您运行wholockme之类的工具,您将能够看到锁定文件的进程。
答案 7 :(得分:2)
如果您正在使用IntelliJ,则可以在Maven Runner设置中传递其他参数:
-Dmaven.clean.failOnError=false
在此处,在VM选项中设置:
参考文献: http://www.jetbrains.com/idea/webhelp/maven-runner.html http://maven.apache.org/plugins/maven-clean-plugin/faq.html
答案 8 :(得分:2)
Windows索引服务,应用程序服务器或持有JAR文件的IDE是根本原因。最佳解决方案是禁用Windows搜索服务或从索引中排除JAR文件。
另一个(不完美)选项mvn clean || mvn clean
。双管符号仅在第一个命令失败时运行第二个命令。
有关如何查找和删除Windows写锁定的详细信息,请参阅Releasing Windows file share locks(建议使用ProcessExplorer或Unlocker)。
答案 9 :(得分:1)
尝试禁用Windows索引服务。
答案 10 :(得分:1)
我从Hudson运行构建时遇到了同样的问题。
使用handle.exe(来自Sysinternals)我发现java.exe任务对生成的jar文件有一个活动的文件句柄。
如果我杀了这个任务,下一个构建就成功了。 但是,在成功构建之后的下一个构建将再次失败并出现相同的错误。
即使构建任务成功,似乎也没有正确终止并保持文件打开。
我是哈德森的初学者,起初我没有遇到这个问题。 然后我玩了一些插件,后来这个问题出现了,并且可以重现。
我几乎停用了所有插件(只保留了一些必要的插件,如颠覆和声纳),现在问题似乎已经解决了。
希望这有点帮助...
答案 11 :(得分:1)
我遇到了同样的问题。我关闭了eclipse并查看了任务管理器中正在运行的进程,并看到了一个名为'Java.exe'的程序,它通常不会运行所以我结束了它,然后再次运行'mvn clean'。它应该正确删除文件并正常工作。
答案 12 :(得分:1)
在我的例子中,有一个java进程正在执行surefirebooter.jar,它是执行maven JUnit测试的插件。 所以你可以简单地打开任务管理器并终止java进程。
答案 13 :(得分:0)
我发现当源代码在C盘上时,使用Maven on Window 7的Java开发很困难。将我的代码移动到另一个驱动器。即使是逻辑驱动器也可以工作,驱动器不一定需要是不同的物理硬盘驱动器。
答案 14 :(得分:0)
如果您不想更改Windows索引设置,也可以暂停它。
答案 15 :(得分:0)
你应该关闭目标中的所有文件,对我来说我直接使用M2eclipse更好你也可以尝试mvn clean -Dmaven.clean.failOnError = false
答案 16 :(得分:0)
那是因为你阻止目标目录(打开文件或进入目标目录的(子)目录,或者任何其他进程/应用程序使用此目录中的文件)。如果windows delete命令也抱怨它不是maven错误。
答案 17 :(得分:-1)
应停止正在运行的应用程序。当您尝试清理应用时,看起来应用仍在运行。
答案 18 :(得分:-5)
解决方案是重启Windows 7.它有助于释放资源。