включить один каталог в архив с Gradle Zip задачей - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть каталог A в корневом каталоге моего проекта. В каталоге A есть подкаталоги B, C, D, E и т. Д.

Я хочу создать архив только из B и игнорировать другие. Я написал задание на сжатие, чтобы сжать каталог B.

task ZipOnlyB(type: Zip){
archiveName = "ArchiveOfB.zip"
destinationDir = file ("${rootDir}/toSendToArtifactory")

from "${rootDir}/A/B"
}

Приведенный выше код работает и создает архив с именем ArchiveOfB.zip . Но этот архив не содержит каталог B. Архив содержит только содержимое каталога B.

Ожидаемое содержимое zip-файла : A / B / содержимое каталога B

Фактический содержимое zip-файла : A / contents-of-directory-B

Как мне получить ожидаемый результат. Любое руководство в этом отношении высоко ценится. Я просмотрел раздел «Работа с полями» в документации Gradle, но это не помогает моему делу. Я ожидал, что есть какое-то свойство include для включения директорий, но include работает только с файлами, и пример каталога не был приведен.

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете использовать метод into (см. https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Zip.html#org.gradle.api.tasks.bundling.Zip:into(java.lang.Object)), чтобы указать каталог назначения внутри архива

В вашем случае вы можете сделать что-то вроде:

task ZipOnlyB(type: Zip){
    archiveName = "ArchiveOfB.zip"
    destinationDir = file ("${rootDir}/toSendToArtifactory")

    from  fileTree('A/B')
    into ('A/B')
}

Это создаст архив с каталогом первого уровня «A», содержащим каталог «B» и его содержимое.Если вам не нужен этот корневой каталог «A», а просто каталог «B», используйте into ('B')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...