Zip-файлы с помощью AntBuilder
Мне нужно сжать коллекцию файлов из разных мест в один почтовый индекс, сохраняя их первоначальные отношения. Например, мне нужны только a1 и b2 из следующей структуры папок
Top -- A -- a1
-- a2
-- B -- b1
b2
и я хочу, чтобы почтовый файл был похож на:
Top -- A -- a1
-- B -- b2
Как я могу сделать это с помощью AntBuilder? Я пробовал:
def deployFiles = ["$ HOME / Songs / a.tsv", "$ HOME / Songs / b.tsv",]
def ant = новый AntBuilder ()
def zipFile = новый файл ("deploy_zipFile.zip")
ant.zip (destFile: "$ {zipFile.getAbsolutePath ()}") {fileset (dir: "$ HOME") {deployFiles.each {f -> включает в себя: deployFiles.join(",") } } }
но это просто застегнуло всю папку HOME.
1 ответ
Решение
Учитывая структуру каталогов, как это:
-- home
|-- Songs
| |-- A
| |-- a1.tsv
| \-- a2.tsv
|-- B
|-- b1.tsv
\-- b2.tsv
Затем этот код:
def HOME = 'home'
def deploymentFiles = [ 'Songs/A/a1.tsv', 'Songs/B/b1.tsv' ]
def zipFile = new File("deployment_zipFile.zip")
new AntBuilder().zip( basedir: HOME,
destFile: zipFile.absolutePath,
includes: deploymentFiles.join( ' ' ) )
Создает zip-файл, который при распаковке содержит:
unzip ../deployment_zipFile.zip
Archive: ../deployment_zipFile.zip
creating: Songs/
creating: Songs/A/
inflating: Songs/A/a1.tsv
creating: Songs/B/
inflating: Songs/B/b1.tsv