У меня есть многомодульный проект Gradle 4.4 - есть родительский build.gradle
, а затем два дочерних проекта Gradle, каждый со своим build.gradle
.Оба являются проектами Java (один для кода разработчика, другой для обеспечения качества).Проект dev является зависимостью от проекта QA (у меня testCompile project(':dev-project')
в build.gradle
проекта QA).В противном случае нет ничего интересного или необычного в файлах build.gradle
- они импортируют плагин java
и com.github.johnrengelman.shadow
.
Если я пытаюсь собрать родительский проект дважды подряд (без открытых IDE,при запуске ./gradlew clean build
из Git Bash без прав администратора) сборка завершается неудачно:
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)
Я подозреваю, что dev-project
JAR невозможно удалить, поскольку он зависит от проекта QA, и поэтому Gradleсохраняет некоторую блокировку.
Я могу успешно построить, если удаляю процесс Java(TM) Platform SE Binary
в диспетчере задач Windows, но я бы хотел, чтобы он был автоматическим.