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
:
我从命令行看到和eclipse插件一样的行为
如果我在STS运行时观看解锁器,我会看到
:
在开始清理之前停止服务器。
停止服务器
您可以从“服务器”视图停止服务器。
要停止服务器:
- 在“服务器”视图( 窗口>显示视图>其他>服务器>服务器>确定 )中,select要停止的服务器。
- 点击停止服务器 图标在工具栏中。 在“服务器”视图中,服务器的状态更改为“已停止”。
-
如果由于某种原因服务器无法停止,您可以按如下方式终止该进程:
一个。 切换到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文件。
脚步:
-
绑定maven-antrun-plugin:将目标运行到mvn clean的预清理阶段。 看看这里如何做到这一点
-
请参阅如何使用antrun插件在Windows中运行外部batch file: sblundy对“启动外部进程”的回答 。 我们来调用这个文件
unlock_handles.bat
-
使用pre_clean.bat中的Sysinternals句柄实用程序下载链接 a)停止Tomcat服务器,并b)解锁.jar文件。
handle -c
和handle -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日食,并再次打开日食。