Maven 无法执行目标 org.apache.maven.plugins:maven-clean-plugin:2.5:clean 无法删除 access_log

Maven Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean Failed to delete access_log

我正在尝试 运行 使用 Maven 和 tomcat 的简单 struts 项目。

当我尝试执行下一个目标时:clean install tomcat7:run 我得到 MojoExecutionException :

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean
(default-clean) on project myproject: Failed to clean project: Failed to delete
D:\EclipseWorkspace\myproject\target\tomcat\logs\access_log.2015-02-21
-> [Help 1]

我用谷歌搜索了解到 tomcat 使用这个 access_log 文件,他在其中记录用户请求。当我想执行上面列出的目标时,因为我正在使用 Eclipse IDE,JVM 拒绝删除此文件。

我看到了同样的问题:Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.4.1, Maven - Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean

但不理解针对此类问题提出的解决方案。

每当有进程锁定 Maven 试图清理的某个子文件夹中的文件时,我就看到过此类错误。检查您的 Tomcat 实例是否真的停止(在任务管理器中查找不应该存在的 java 进程)。我还通过在文本编辑器中打开访问日志为自己制造了这个问题,然后在关闭 Tomcat 并尝试 运行 新构建后忘记关闭编辑器。

Micahel Peacockkhmarbaise 关于某些进程正在阻止删除的说法是正确的。

这是给像我这样的 maven 新手的一些提示。

我遇到过这样的问题,因为在 运行 Tomcat 以 maven 目标 clean install tomcat7:run 之后,我通过 shutdown 中的批处理文件停止了它 ${CATALINA_HOME}/bin目录或通过单击下一个标签通过安装的 Eclipse Tomcat 插件:

但要以正确的方式执行此操作,您应该在控制台视图中单击停止标签:

然后 locale tomcat 实例将停止并且不会出现此类错误,因为进程将正常关闭。

我在 Fedora 中遇到了同样的问题。在我的例子中,目标目录的所有者被更改为 root usring --> [chown your-username target] 我修好了。

在我的例子中,它是一个不同于 Tomcat 阻止应该删除的文件夹的程序。这是我基于 Michael Peacock 的回答的方法:

这样你在 Windows 10 你可以找出哪个进程阻止了文件或文件夹:

  1. 搜索“资源监视器”
  2. 转到选项卡“CPU”
  3. 向下滚动到“关联句柄”
  4. 在该选项卡的搜索栏中搜索文件或文件夹。
  5. 如果您认为这是阻塞进程,请终止该进程。

如果您不知道哪个文件不能删除,请检查Maven 的日志。它会告诉您在错误发生之前它正在删除哪个文件或文件夹。这很可能是导致问题的原因。