maven …无法清理项目:无法删除.. \ org.ow2.util.asm-asm-tree-3.1.jar

我使用STS(弹簧工具套件)+ maven插件。

每当我使用maven-clean运行我的应用程序时,我会看到以下错误:

 [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building hhsystem ui 1.0.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ ui --- [INFO] Deleting C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.471s [INFO] Finished at: Mon Oct 21 12:34:33 MSK 2013 [INFO] Final Memory: 2M/90M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean (default-clean) on project ui: Failed to clean project: Failed to delete C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target\org.ow2.util.asm-asm-tree-3.1.jar -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 

我必须closuresSTS并转到C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target并删除org.ow2.util.asm-asm-tree-3.1.jar

再次启动STS后,它可以工作,但这是一个麻烦。

你能帮我解决这个问题吗?

UPDATE
为Kalathoki L.

我从这个状态运行maven-clean

STS屏幕截图

我从命令行看到和eclipse插件一样的行为

如果我在STS运行时观看解锁器,我会看到

解锁器屏幕截图

在开始清理之前停止服务器。

停止服务器

您可以从“服务器”视图停止服务器。

要停止服务器:

  1. 在“服务器”视图( 窗口>显示视图>其他>服务器>服务器>确定 )中,select要停止的服务器。
  2. 点击停止服务器 这个 图标在工具栏中。 在“服务器”视图中,服务器的状态更改为“已停止”。
  3. 如果由于某种原因服务器无法停止,您可以按如下方式终止该进程:

    一个。 切换到debugging透视图。

    湾 在“进程”视图中,select要停止的服务器进程。

    C。 点击终止 这是终止的形象 图标在工具栏中。

注意:终止服务器时,服务器进程将结束,服务器将不会经过正常的停止例程,例如调用servlet上的destroy()方法。

来源: Eclipse帮助

您也可以尝试尝试-Dmaven.clean.failOnError=false (来自Maven FAQ )

你的问题是,在STS中运行的进程正在使用位于目标目录中的文件,而执行mvn clean命令。 Maven将无法删除这些文件(因为其他进程仍在访问它们),从而导致错误。

尝试在运行Maven控制台命令之前停止STS内的所有进程(testing,服务器,应用程序)。 注意:如果STS正在清理项目并重新编译源代码,而不运行进程,则也可能出现此行为。

简介:使用一个外部脚本(batch file)a)停止服务器和b)在运行maven-clean之前解锁.jar文件。

脚步:

  1. 绑定maven-antrun-plugin:将目标运行到mvn clean的预清理阶段。 看看这里如何做到这一点

  2. 请参阅如何使用antrun插件在Windows中运行外部batch file: sblundy对“启动外部进程”的回答 。 我们来调用这个文件unlock_handles.bat

  3. 使用pre_clean.bat中的Sysinternals句柄实用程序下载链接 a)停止Tomcat服务器,并b)解锁.jar文件。 handle -chandle -p在这里很有用。

呼! 这是一个工作,但它会可靠地自动化你的过程,所以你确实需要手动去做,每一次!


好的,下面是一个简单的概念validation版本的unlock_handles.bat供您试用:

 REM "Use handle.exe to figure out the process id and handle ids, parse the output, then close the handle (again using handle.exe)" cd "C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target" "c:/Program Files/Process Explorer/handle.exe" -p java.exe "C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target" > handles.txt @echo "O====== Going to unlock all the below file handles! =======O" FOR /F "tokens=1-26 delims=: " %a in (handles.txt) DO @echo %h FOR /F "tokens=1-26 delims=: " %a in (handles.txt) DO handle -p %c -c %f -y 

当然,在尝试之前,你必须改变Sysinternals的handle.exe的path。

可能有许多使用源代码编译的进程,可能是服务器,旧的Maven指令或IDE。 确定终止所有进程,停止服务器,然后再次执行maven。 如果问题依然存在,则应closuresjava.exe进程。

问候!

我有同样的问题和这个

 mvn clean install -U 

命令修复了错误。

对于linux用户:可能的解决scheme。

如果只有删除访问权限提供给root用户而不是正常用户,将会发生由于“无法删除<任何文件或文件夹>”导致的错误。

修复:键入ll命令列出无法删除的文件,如果文件被授予root权限,则更改为普通用户:

sudo chown -R用户名:用户名文件名

后来尝试maven干净和build设。

尝试禁用项目 – >自动生成。

正如天蝎座build议的那样,有一个运行的进程在某个文件上被locking。

我有一个大型的多模块maven项目,经常无法清理,这解决了我。 完成后,我重新启用“自动构build”。

我有类似的问题。 之前我使用Maven 3来构build这个项目。 切换到maven 2后,我有上面的错误。

通过切换到Maven 3来解决它。

closuresmvn clean之前打开的目标文件夹及其文件

删除任务pipe理器中的java.exe进程,并运行mvn clean install.It为我工作。

如果您locking了org.ow2.util.asm-asm-tree-3.1.jar并启动了eclipse,则logging显示谁无法locking文件。 不能locking文件的相同的代码行不会释放锁。

在预清理阶段,我使用Maven Unlocker程序执行。 这个程序解锁所有文件和目录的任何程序。

我用maven-antrun-plugin执行这个,只在windows系统中执行

 <profile> <activation> <os> <family>windows</family> </os> </activation> <build> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>pre-clean</phase> <configuration> <tasks> <exec dir="${project.build.directory}" executable="cmd" failonerror="false"> <arg value="Unlocker.exe" /> <arg value="/S" /> </exec> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> 

如果你没有对目标文件夹的pipe理权限,Maven会抱怨。检查你是否有权删除该文件夹。

在这里输入图像说明

如果所有的步骤(在现有的答案)不工作,只需closures日食,并再次打开日食。