2013-03-19 4 views
0

У меня есть следующий код:сохранить исходные имена в Groovy Ant Task

new AntBuilder().zip(destFile: "${file}.zip") { 
     fileset(dir: srcDir) { 
      include(name:pattern) 
     } 
    } 

В этом примере я хотел бы муравей создать почтовый индекс с тем же именем, что и исходный файл, но с .zip добавлен в конец. Есть ли способ сделать это, не зная имя оригинального файла раньше времени в ant? Я хотел бы иметь возможность делать то же самое с другими задачами муравьев.

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

+0

В каком классе находится объект «работа»? Задача groovy zip принимает строки как параметры. –

+0

Моя ошибка, это был только контейнер, и в том числе это осложнило вопрос. Я отредактировал это. Когда вы говорите, что Groovy Zip Task ... это вещь муравья или вещь Groovy? Как мне это сделать? – Steve

ответ

1

Что-то вроде этого?

<target name="zip-files"> 
    <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/> 

    <dirset id="dirsToZip" dir="src"> 
     <include name="dir*"/> 
    </dirset> 

    <groovy> 
     project.references.dirsToZip.each { 
      ant.zip(destfile: "${it}.zip", basedir: it) 
     } 
    </groovy> 
</target> 

Если найти возможность Отлич- задачу на итерацию через набор файлов или dirset очень полезную функцию.

+0

Итак, вы говорите, что единственный способ сделать это - перебрать все их, что нет декларативного способа сделать это. Спасибо за помощь! – Steve