Извлечение одной банки внутри почтового индекса, используя задачу Gradle - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь извлечь банку из zip-файла, который находится внутри zip-файла, как показано ниже.

test.zip /web-inf /lib /result1.jar

Вот задача: -

task unzip(type: Copy){ 
    group "testgroup"
    def zipFile = file("$buildDir/test.zip") 
    def tree = zipTree(zipFile) 
    from(tree.matching { include "**/result1.jar"}) 
    into "$builddir/dir"
    includeEmptyDirs = false 
}

НоЯ получаю файл jar со структурой папок, такой как /web-inf/lib/result1.jar.Мне нужен только файл jar, а не папки (/web-inf/lib/).

Пожалуйста, исправьте ошибку в задаче gradle.

1 Ответ

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

Gradle Copy DSL предоставляет метод eachFile (Closure closure), который можно использовать для выполнения действий с каждым файлом, который будет скопирован / извлечен, см. Копировать DSL

В вашем случаеВы можете использовать этот метод для переименования (удаления родительских каталогов из пути) вашего файла:

task unzip(type: Copy) {
    group "testgroup"


    from( zipTree(file("test.zip")).matching { include "**/result1.jar"  } )
    into "$buildDir/dir"

    def parentDir = "web-inf/lib"
    eachFile { fcp ->
        fcp.path = fcp.path.replaceFirst("^$parentDir", '')
    }
    includeEmptyDirs = false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...