首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle Zip任务根据目标目录永远运行

Gradle Zip任务根据目标目录永远运行
EN

Stack Overflow用户
提问于 2019-02-22 23:17:40
回答 1查看 249关注 0票数 1

所以我遇到了这种奇怪的行为,想不出原因,也找不到解决方案。我的build.gradle中有一个压缩任务,它应该将所有内容压缩到一个目录中,并将压缩文件放在同一个目录中。看起来是这样的:

代码语言:javascript
复制
task combinedFilesZip(type: Zip) {
    from "${buildDir}/Release-Artifacts/Release-1"
    archiveName = "${project.name}-${project.version}-AllFiles.zip"
    destinationDir = file("${buildDir}/Release-Artifacts/Release-1/")
}

这个任务本质上不会终止并永远持续下去,但在检查文件系统时,我可以看到正在创建zip,但它的大小在2-3 GB之间,这绝对是错误的。尝试解压缩此工件时出现错误

然后我改变了:destinationDir = file("${buildDir}/"

然后,突然,zip任务几乎立即执行,所有正确的东西都在zip中。对此有什么解释吗?有没有办法将创建的zip文件放在正在压缩的同一目录中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-23 02:45:28

这看起来像是zip任务中的一个bug。在创建归档文件时,zip任务将文件作为字节数组块从目录中读取,并将其创建的zip文件写入同一目录。并开始读取和压缩它创建的zip文件。这就产生了一个无限的循环。

我用gradle 4.10.2测试了这一点,它的行为不是这样的。您可以尝试升级您的gradle。如果您不能这样做,您可以尝试在zip任务中排除zip文件名,如下所示

代码语言:javascript
复制
task combinedFilesZip(type: Zip) {
    from ("${buildDir}/Release-Artifacts/Release-1"){
       exclude "${project.name}-${project.version}-AllFiles.zip"
    }
    archiveName = "${project.name}-${project.version}-AllFiles.zip"
    destinationDir = file("${buildDir}/Release-Artifacts/Release-1/")
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54830119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档