Gradle Zip Task выполняется вечно в зависимости от целевого каталога - PullRequest
0 голосов
/ 22 февраля 2019

Так что я столкнулся с этим странным поведением и не могу придумать причину этого и не смог найти решение для этого.У меня есть задача Zip в моем build.gradle, которая должна заархивировать все в каталоге и поместить 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 ГБ, чтоабсолютно неправильно.Я получаю сообщение об ошибке при попытке разархивировать этот артефакт

Затем я изменил: destinationDir = file("${buildDir}/"

И вдруг задача zip выполняется почти мгновенно, и все нужные вещи находятся в zip.Есть ли объяснение этому?И есть ли способ поместить созданный почтовый индекс в тот же каталог, в который архивируется?

1 Ответ

0 голосов
/ 22 февраля 2019

Это похоже на ошибку в 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/")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...