81

我使用 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

我必须关闭 STS 并去C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target删除org.ow2.util.asm-asm-tree-3.1.jar

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

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

Kalathoki
L 的更新。

maven-clean从这个状态跑:

STS 屏幕截图

我在命令行中看到与 eclipse 插件中相同的行为

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

解锁器屏幕截图

4

23 回答 23

63

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

停止服务器

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

要停止服务器:

  1. 在 Servers 视图(Window > Show View > Other > Server > Servers > OK)中,选择要停止的服务器。
  2. 单击工具栏中的停止服务器 这个图标。在 Servers 视图中,服务器的状态更改为 Stopped。
  3. 如果由于某种原因服务器无法停止,您可以按如下方式终止该进程:

    一个。切换到 Debug 透视图。

    湾。在进程视图中,选择要停止的服务器进程。

    C。单击工具栏中的终止 这是终止的图像 图标。

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

来源: Eclipse 帮助

于 2013-10-21T08:46:00.747 回答
36

您也可以尝试尝试-Dmaven.clean.failOnError=false (来自Maven 常见问题解答

于 2014-09-19T06:34:59.370 回答
29

删除任务管理器中的 java.exe 进程并运行 mvn clean install。它对我有用。

于 2017-06-14T14:15:47.143 回答
16

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

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

于 2013-10-21T08:56:51.050 回答
9

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

问候!

于 2016-08-22T15:06:04.840 回答
9

关闭您在 mvn clean 之前打开的目标文件夹及其文件

于 2017-02-03T07:25:38.337 回答
7

尝试禁用项目-> 自动构建。

正如天蝎座建议的那样,有一个正在运行的进程在某处锁定了某个文件。

我有一个大型的多模块 maven 项目,该项目经常在清理时失败,这为我解决了这个问题。完成后我重新启用自动构建。

于 2016-01-08T12:03:39.860 回答
5

摘要:使用一个外部脚本(批处理文件),a)停止服务器,b)在运行 maven-clean 之前解锁 .jar 文件。

脚步:

  1. 将 maven-antrun-plugin:run 目标绑定到 mvn clean 的 pre-clean 阶段。在此处查看如何执行此操作

  2. 在此处查看如何使用 antrun 插件在 Windows 中运行外部批处理文件:sblundy 对“启动外部进程”的回答。让我们调用这个文件unlock_handles.bat

  3. 使用 pre_clean.bat 中的Sysinternals 处理实用程序下载链接来 a) 停止 Tomcat 服务器和 b) 解锁 .jar 文件。handle -c在这里handle -p会很有用。

哇!这有点工作,但它会可靠地为您自动执行该过程,因此您每次都需要自己手动完成!


好的,这是 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 的路径。

于 2013-10-23T17:27:57.250 回答
5

我有同样的问题,这个

mvn clean install -U

命令修复了错误。

于 2016-06-06T07:36:22.383 回答
4

如果所有步骤(在现有答案中)都不起作用,只需关闭 eclipse 并再次打开 eclipse 。

于 2017-11-21T04:32:38.887 回答
3

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

如果有机会仅删除提供给root用户而不是普通用户的访问权限,则会发生由于“无法删除 <any-file-or-folder >”而导致的构建错误。

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

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

稍后尝试 maven clean and build。

于 2014-05-23T12:54:35.330 回答
3

通过手动删除目标文件夹来解决。

于 2020-09-03T08:16:53.810 回答
1

我有类似的问题。早些时候,我使用 Maven 3 来构建项目。切换到 maven 2 后,出现上述错误。

通过切换到 Maven 3 解决了这个问题。

于 2016-03-21T23:42:53.570 回答
1

我通过这样做解决了我的问题:

  • mvn 清洁
  • mvn 安装
  • mvn 干净安装

由于某些原因,它对我有用。祝你好运 !!

于 2018-02-14T20:14:57.523 回答
1

如果您对目标文件夹没有管理员权限,Maven 会抱怨。请检查您是否拥有删除该文件夹的管理员权限。

在此处输入图像描述

于 2017-05-09T01:01:33.090 回答
0

如果您锁定org.ow2.util.asm-asm-tree-3.1.jar并启动 Eclipse,日志会显示谁无法锁定该文件。无法锁定文件的同一代码行将不会释放锁定。

于 2014-07-07T09:51:03.817 回答
0

如果您有一个使用像 ftp 或 ssh 会话一样部署的打包应用程序运行该进程 - 它可能会阻止资源被删除或移动:

所以确定正在使用战争或罐子的开放端口,关闭它 - 然后重新启动

sftp - ssh 端口:22

ssh 端口:取决于配置

于 2021-05-18T14:36:43.500 回答
0

请关闭所有浏览器选项卡。下次当您尝试从目标文件夹以外的其他地方上传战争时。

于 2019-01-25T11:42:12.107 回答
0

如果您在 Eclipse 或 IntelliJ 等 IDE 中遇到此错误,您可能会打开一个或多个调试窗口并在断点处暂停。终止他们。

于 2019-09-10T16:29:02.860 回答
0

在预清洁阶段,我使用 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>
于 2015-09-10T11:04:46.443 回答
0

此错误的原因是,maven 试图删除的文件正在被某个进程使用。此类过程的一个示例是 Eclipse 或任何其他 IDE 正在对同一项目进行验证。

请确保没有从 Eclipse 或任何其他打开项目的 IDE 运行验证。

于 2020-03-03T10:04:59.767 回答
0
  1. 我关闭了 Git Bash(可能是您正在使用的另一个终端)。它停止进程
  2. 删除 ...0.0.1-SNAPSHOT.jar
  3. mvn clean install(或其他启动项目的命令;我们有.sh)
于 2021-03-31T19:53:59.673 回答
-1

为了我

mvn install
mvn clean install

工作..

于 2020-12-30T10:57:05.537 回答