Gradle Groovy中如何用路径通配符批量删除多位置target文件夹
解决Gradle clean任务批量删除多层级target文件夹的问题
你直接用delete("${projectDir}/**/target")不生效的原因是,Gradle直接解析字符串通配符时会依赖操作系统的文件系统匹配规则,跨平台兼容性差,容易出现匹配不到的情况。换用Gradle内置的文件树匹配器,就能可靠批量删除所有层级的target文件夹。
给你两种简洁的可行写法:
方法一:在clean任务中直接用fileTree指定匹配规则
clean { delete fileTree(projectDir) { include '**/target' // 若有不需要删除的特定target,可添加exclude规则,比如 exclude 'src/main/resources/keep/target' } }
方法二:先获取所有匹配目录再执行删除
clean { delete project.fileTree('.').include('**/target') }
这两种写法都基于Gradle原生的文件匹配逻辑,能跨平台准确找到项目下所有层级的target文件夹并删除。执行gradle clean --info还能查看详细删除日志,确认所有目标文件夹都被正确处理。
内容的提问来源于stack exchange,提问作者Mohamed Ishad
相关产品推荐
相关产品推荐

