У меня есть скрипт сборки gradle, который содержит задачу, подобную следующей:
task unzip_foo_bar (type: Copy) {
from zipTree ("foo.zip").matching { include '**/bar.h' }.singleFile
into "build"
}
.zip-файл извлекается из внешнего репозитория в локальное рабочее пространство перед выполнением задачи.
Но по какой-то причине, когда вы используете .matching вместе с .singleFile, Gradle ожидает, что zip-файл уже присутствует в локальной рабочей области при компиляции скрипта.
В этом случаеСбой компиляции скрипта из-за того, что .zip-файл не существует во время компиляции.
Таким образом, без проблем работает следующее:
task unzip_foo_bar (type: Copy) {
from zipTree ("foo.zip")
into "build"
}
В этом случае Gradle может компилироватьсценарий, и он просто работает.
Может кто-нибудь объяснить разницу в поведении?
Причина первой реализации заключается в том, что я хотел бы иметь возможность извлечь один файл из .zipархивировать вместо того, чтобы выгружать все файлы из архива в локальное рабочее пространство.
Как бы я сделал эту работу?