[英]Gradle clean unable to delete dependent jar
I have a multi-module Gradle 4.4 project - there's a parent build.gradle
and then two child Gradle projects, each with their own build.gradle
. 我有一个多模块Gradle 4.4项目 - 有一个父
build.gradle
,然后是两个子Gradle项目,每个项目都有自己的build.gradle
。 Both are Java projects (one is for dev code, the other for QA). 两者都是Java项目(一个用于开发代码,另一个用于QA)。 The dev project is a dependency of the QA project (I have
testCompile project(':dev-project')
in the QA project's build.gradle
). 开发项目是QA项目的依赖项(我在QA项目的
build.gradle
有testCompile project(':dev-project')
)。 Otherwise there is nothing remotely interesting or unusual in the build.gradle
files - they import the java
plugin and com.github.johnrengelman.shadow
. 否则
build.gradle
文件中没有任何远程有趣或异常的build.gradle
- 它们导入java
插件和com.github.johnrengelman.shadow
。
If I try to build the parent project twice in a row (no IDEs open, running ./gradlew clean build
from Git Bash without Administrator privileges), the build fails: 如果我尝试连续两次构建父项目(没有IDE打开,在没有管理员权限的情况下从Git Bash运行
./gradlew clean build
),则构建失败:
09:55:24.449 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Execute clean for :dev-project:clean'
09:55:24.449 [DEBUG] [org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter] Removed task artifact state for {} from context.
09:55:24.450 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':dev-project:clean'
09:55:24.450 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger] :dev-project:clean FAILED
09:55:24.451 [WARN] [org.gradle.api.Project] :dev-project:clean took 1587ms
09:55:24.451 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Task :dev-project:clean'
09:55:24.451 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Build operation 'Task :dev-project:clean' completed
09:55:24.452 [INFO] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] :dev-project:clean (Thread[Task worker for ':',5,main]) completed. Took 1.588 secs.
09:55:24.452 [DEBUG] [org.gradle.internal.work.DefaultWorkerLeaseService] Worker lease root.1.14 completed (1 worker(s) in use)
09:55:24.452 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Task worker for ':': released lock on root.1.14
09:55:24.452 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Task worker for ':': released lock on :
09:55:24.452 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker for ':',5,main]] finished, busy: 1.588 secs, idle: 0.002 secs
09:55:24.453 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Daemon worker Thread 3,5,main]] finished, busy: 0.0 secs, idle: 1.59 secs
09:55:24.453 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker for ':' Thread 2,5,main]] finished, busy: 0.0 secs, idle: 1.591 secs
09:55:24.454 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker for ':' Thread 3,5,main]] finished, busy: 0.0 secs, idle: 1.592 secs
09:55:24.455 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Run tasks'
09:55:24.456 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
09:55:24.456 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception.
09:55:24.456 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
09:55:24.456 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
09:55:24.456 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task 'dev-project:clean'.
09:55:24.456 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Unable to delete file: C:\workspace\parent-project\dev-project\libs\dev-project-0.1.0.jar
09:55:24.457 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
09:55:24.457 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try:
09:55:24.457 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Run with --scan to get full insights.
09:55:24.457 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
09:55:24.457 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Exception is:
09:55:24.457 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':dev-project:clean'.
09:55:24.457 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions( ExecuteActionsTaskExecuter.java:100)
09:55:24.457 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute( ExecuteActionsTaskExecuter.java:70)
09:55:24.458 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
09:55:24.458 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute( SkipUpToDateTaskExecuter.java:62)
I suspect that the dev-project
JAR can't be deleted because it's depended on by the QA project, and so Gradle keeps some kind of lock on it. 我怀疑
dev-project
JAR无法删除,因为它依赖于QA项目,所以Gradle对它保持某种锁定。
I can build successfully if I delete the Java(TM) Platform SE Binary
process in Windows Task Manager, but I'd like it to be automatic. 如果我在Windows任务管理器中删除
Java(TM) Platform SE Binary
进程,我可以成功构建,但我希望它是自动的。
This error is caused by the Gradle Daemon - it stays running in the background after the build completes, and for some reason holds a lock on the dev-project
jar. 此错误是由Gradle Daemon引起的 - 它在构建完成后仍在后台运行,并且由于某种原因在
dev-project
jar上保持锁定。
Adding org.gradle.daemon=false
to my global gradle.properties
file has resolved the issue, albeit at the expense of marginally slower builds. 将
org.gradle.daemon=false
添加到我的全局gradle.properties
文件已经解决了这个问题,尽管代价是建立速度略慢。
I have raised an issue with the Gradle team, and will update this answer if anything comes from it. 我向Gradle团队提出了一个问题 ,如果有任何问题 ,我会更新这个答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.