执行gradle clean build assemble报IOException:管道已关闭如何解决
问题根因
你遇到的pipe is being closed错误本质是Gradle测试执行器进程启动/运行时意外终止,主进程和测试进程的通信管道被提前关闭导致。清理.gradle目录后,测试相关的依赖缓存、Gradle测试执行器的临时配置损坏是最常见诱因,因为添加-x test参数跳过测试后构建正常,也验证了问题仅出在测试执行环节。
修复步骤
- 第一步:清空项目级别的测试缓存和构建残留
执行命令:gradle cleanTest clean
作用是删除之前所有测试任务的编译产物、临时缓存文件,避免残留的损坏文件影响新的测试执行。 - 第二步:重新下载测试相关依赖
执行命令:gradle test --refresh-dependencies
强制Gradle重新拉取所有测试 scope 的依赖,覆盖之前可能损坏的缓存文件,执行完成后再尝试运行完整构建命令验证。 - 第三步:调整测试进程配置避免进程通信异常
如果上面两步执行后依然报错,在项目的build.gradle中增加如下配置,关闭测试进程复用、限制并行测试进程数,避免进程池损坏导致的通信异常:
配置生效后重新执行test { forkEvery = 1 maxParallelForks = 1 }gradle clean build assemble验证即可。 - 第四步:全局Gradle缓存重置(上述步骤无效时执行)
先关闭所有正在运行的Gradle守护进程,执行命令:gradle --stop
手动删除用户根目录下的.gradle/caches文件夹,再重新执行构建命令,Gradle会自动重建所有全局缓存文件。
内容的提问来源于stack exchange,提问作者pujan kc
相关产品推荐
相关产品推荐

