Gradle Практическое руководство. Распаковка ZIP-файла в ZIP-файл из зависимости с сохранением функциональности добавочной сборки - PullRequest
0 голосов
/ 04 июля 2019

У меня есть (основной) ZIP-архив на сервере Nexus с несколькими другими ZIP-архивами внутри, и мне нужно а) извлечь все ** /. hpp из определенного ZIP-архива б) извлечь все ** /. hpp из всех архивов ZIP в основном архиве

Единственное решение, которое я нашел, это иметь одну задачу копирования для распаковки основного архива в какой-то временный каталог и вторую задачу копирования для просмотра во временной папке.

Что меня беспокоит, так это то, что я не могу удалить временный каталог, или, если я делаю это, первая задача копирования всегда загружается и снова создает временный каталог - хотя вторая задача копирования не имеет ничего общего.

Каким будет рекомендуемый шаблон кода для распаковки zip-файла в zip-файл без необходимости поддерживать какой-либо промежуточный каталог или без потери функциональности инкрементной сборки? Спасибо, Клаус

1 Ответ

2 голосов
/ 04 июля 2019

как то так

configurations {
   zip
} 
dependencies {
   zip 'foo:bar:1.0@zip'
}
task unpackHpp {
   inputs.files configurations.zip
   outputs.dir "$buildDir/hpp" 
   doLast {
      FileTree mainTree = zipTree(configurations.zip.singleFile)
      File zip1 = mainTree.matching { include 'file1.zip'}.singleFile
      File zip2 = mainTree.matching { include 'file2.zip'}.singleFile
      copy {
         from zipTree(zip1).matching { include '**/*.hpp' } 
         from zipTree(zip2).matching { include '**/*.hpp' } 
         from mainTree.matching { include '**/*.hpp' } 
         into "$buildDir/hpp" 
      } 
   } 
} 

Для дальнейшего чтения вас могут заинтересовать мои комментарии здесь

...