Gradle Zip Task永久运行取决于目标目录

时间:2019-02-22 15:17:40

标签: gradle groovy

因此,我遇到了这种奇怪的行为,无法想到它的原因,也找不到解决方案。 我的build.gradle中有一个Zip任务,该任务应该将目录中的所有内容都压缩,然后将zip放入同一目录中。看起来像:

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放在要压缩的目录中?

1 个答案:

答案 0 :(得分:0)

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

我用gradle 4.10.2进行了测试,它的行为不像这样。您可以尝试升级您的gradle。如果您无法执行此操作,则可以尝试在如下所示的zip任务中排除zip文件名

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/")
}