6

我正在使用 Jenkins 在 Maven 3 上构建我的项目。定义了大约 15 个工作。他们整天都在运行 onCommit 或通过 cron 表达式(主要是每小时一次)。有些工作正在使用 Sonar(不是 XXXDailyBuild)。

有时我面临错误:

[错误] 无法在项目 xxx 上执行目标 org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean (default-clean):无法清理项目:无法删除 E:\CI\data\ jobs\XXXDailyBuild\workspace\XXX\xxx\target\surefire\surefirebooter8004371362793469171.jar -> [帮助 1]

这是由surefirebooter8004371362793469171.jar的活动java进程锁定的Jenkins工作区引起的

Jenkins 作业在禁用“如有必要时执行并发构建”的情况下运行。任何其他工作/流程都不要使用“XXXDailyBuild”工作区。

我试图弄清楚发生了什么。有没有办法转储运行“surefirebooter8004371362793469171.jar”进程来分析他们的堆?

4

2 回答 2

10

问题已调查:

  1. 我们的应用程序通过surefirebooter maven plugin jar运行JUnit测试
  2. 每个测试都需要新的模型状态
  3. 在模型初始化期间,旧模型状态被处理并初始化一些模型启动线程,即。目录观察者

根本问题是: 1. 当某些测试在步骤 3 中失败时。旧模型状态没有被处理,这样一些线程不会停止(在每次测试失败时重复)

使用 jvisualvm 工具很容易检查它。

最后,在 maven 测试运行过程之后永远保持活动状态。

希望这个分析对某人有所帮助!

于 2014-11-06T08:37:15.127 回答
1

不知道根本原因和解决方法。但是,您可以从任务管理器中杀死 java.exe(在 Windows 中)。这个 java.exe 锁定了 surefirebooter.jar 文件。杀死 java.exe 将释放该锁,您将能够运行 Maven 构建。

于 2020-09-17T12:09:35.940 回答