升级Gradle至8.5后Spring Boot项目buildDockerImage任务执行失败
场景
Spring Boot项目升级Gradle到8.5、Java到17后,在IntelliJ IDEA 2023.2.4中执行buildDockerImage任务时触发异常。该任务在GitLab流水线、旧版Gradle 6.8.3环境下可正常运行,推测是Windows环境特有的文件锁问题。
异常信息
What went wrong:
Execution failed for task ':project-name:buildDockerImage'.Cannot access input property 'inputDir' of task ':project-name:buildDockerImage'. Accessing unreadable inputs or outputs is not supported. Declare the task as untracked by using Task.doNotTrackState().
Failed to create MD5 hash for file content.
Caused by: java.io.IOException: The process cannot access the file because another process has locked a portion of
the file
at org.gradle.internal.hash.DefaultStreamHasher.doHash(DefaultStreamHasher.java:52)
at org.gradle.internal.hash.DefaultStreamHasher.hash(DefaultStreamHasher.java:35)
... 115 more
任务代码
task buildDockerImage(type: DockerBuildImage) { inputDir = project.projectDir (...) }
已尝试操作
- 升级
com.bmuschko:gradle-docker-plugin至6.7.0,问题未解决
解决方案尝试
1. 禁用任务状态跟踪
直接按照异常提示,给任务添加状态禁用配置,跳过Gradle对输入目录的哈希校验:
task buildDockerImage(type: DockerBuildImage) { inputDir = project.projectDir doNotTrackState("Windows环境文件锁导致哈希生成失败,禁用状态跟踪") (...) }
2. 缩小inputDir范围
避免把整个项目目录作为Docker构建输入,只指定实际需要的目录(比如存放Dockerfile的子目录或构建产物目录),减少被锁文件的接触范围:
task buildDockerImage(type: DockerBuildImage) { inputDir = file("$project.buildDir/docker") (...) }
3. 调整IDEA相关配置
Windows下IDEA的后台索引、文件监控可能锁定文件,临时修改以下配置:
- 切换Gradle运行模式:在
Settings > Build, Execution, Deployment > Build Tools > Gradle中,将Build and run using改为Gradle,而非IDEA内置工具 - 关闭实时文件同步:在
Settings > Appearance & Behavior > System Settings > Synchronization中,禁用Sync files on frame activation和Auto-reload changed files
4. 释放文件锁
排查并关闭锁定项目文件的进程:
- 用Windows资源监视器的“关联的句柄”功能,搜索项目目录下的文件,定位锁定进程并关闭
- 重启IDEA或电脑,强制释放所有可能的文件锁
内容的提问来源于stack exchange,提问作者qbabor4

