Получить архив из архива .tar.gz в Gradle - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть несколько .tar.gz -архивов, и я хотел бы только распаковать архив Tarball, чтобы создать хэш контрольной суммы sha256 для .tar -файла.(Причина этого в том, что архив будет распакован и перепакован позже, так как мы создаем файлы патчей.)

Теперь это кажется простой задачей, но я застрял.Существуют примеры Gradle для:

  1. получения распакованного tarTree (с заданием копирования Gradle и tarTree(resources.gzip('model.tar.gz')) (из документации: работа с файлами )
  2. распаковка файлов (с zipTree), которая не работает с сжатыми файлами

Оба подхода не работают, так как мне нужно создать контрольную сумму самого файла .tar -File.К сожалению, я не могу использовать commandLine или gunzip, поскольку задачи должны выполняться как в Windows, так и в Linux.

Единственное решение, которое я могу себе представить, - это распаковать tar.gz в fileTree и перепаковатьэто в tar-файл, но я даже не уверен, что контрольная сумма будет такой же.

Неужели нет способа сделать это напрямую?

1 Ответ

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

Наконец я получил его для работы с помощью коллеги.

Используя resources.gzip(), который возвращает ReadableResource, мы можем скопировать полученный InputStream в .tar -файл с IOUtils.copy :

file("test.tar").withOutputStream { outputFile ->
    IOUtils.copy(resources.gzip(file("test.tgz")).read(), outputFile)
}

Нам также нужно было добавить общие Apache ("commons-io:commons-io:2.6") в качестве зависимости.

...