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  
Другие вопросы по тегам