执行Gradle clean build任务失败,无法删除文件求助
Gradle Clean任务无法删除MANIFEST.MF文件的解决方案
我之前也碰到过一模一样的问题,这类文件删除失败的情况,大多和文件被进程占用或者权限配置异常有关。结合你已经执行过进程查杀操作的前提,给你几个针对性的排查和解决步骤:
1. 排查非Java进程对文件的占用
你用jps杀掉了Java进程,但有时候文件管理器、终端会话甚至系统后台服务也可能悄悄占用这些临时文件。可以用以下命令精准定位:
# 检查根项目下MANIFEST.MF的占用进程 lsof /home/user/folder1/projectfolder/buildDir/tmp/jar/MANIFEST.MF # 检查模块目录下的对应文件 lsof /home/user/folder1/projectfolder/modulename/build/tmp/jar/MANIFEST.MF
如果查到相关进程,直接用kill -9 <进程PID>杀掉,再重新执行构建命令。
2. 手动清除残留构建目录
如果没查到占用进程,大概率是文件系统缓存或者临时锁导致的。直接手动删除整个build目录最直接:
# 删除根项目的build目录 rm -rf /home/user/folder1/projectfolder/buildDir # 删除模块的build目录 rm -rf /home/user/folder1/projectfolder/modulename/build
删除完成后,重新运行你的构建命令:
./gradlew clean build --parallel -x test publishlocal
3. 检查文件与目录权限
有时候Gradle进程没有足够的权限删除文件,你可以先查看权限配置:
# 查看文件权限 ls -l /home/user/folder1/projectfolder/buildDir/tmp/jar/MANIFEST.MF # 查看父目录权限 ls -ld /home/user/folder1/projectfolder/buildDir/tmp/jar/
如果当前用户没有读写权限,用以下命令递归修改:
chmod -R u+rw /home/user/folder1/projectfolder/buildDir chmod -R u+rw /home/user/folder1/projectfolder/modulename/build
4. 临时禁用并行构建测试
你当前用了--parallel参数,并行模式下偶尔会出现资源竞争导致文件锁冲突。可以先去掉这个参数,单线程执行clean任务:
./gradlew clean build -x test publishlocal
如果单线程执行成功,再尝试开启并行构建——要是还是出问题,建议升级Gradle到最新稳定版,这类并行模式下的资源竞争问题很多都在新版本里修复了。
内容的提问来源于stack exchange,提问作者Ank
相关产品推荐
相关产品推荐

