2009-03-09 5 views
1

Как динамически генерировать набор файлов на основе пользовательского ввода?Как «динамически» генерировать набор файлов?

Учитывая эти каталоги:

root 
--dir1 
----filesA.txt 
----subdir1_1 
--dir2 
----filesB.xml 
--dir3 
----filesC.java 
----subdir3_1 
--dir4 
----filesD.txt 
----subdir4_1 
------subdir4_1_1 

и командной строки вызова:

ant -Ddirectory="dir1 dir3" 

<target name="zip"> 
    <zip destfile="${root}/archive.zip"> 
    <fileset dir="${root}"> 
     <include name="**/*"/> 
    </fileset> 
    </zip> 
</target> 

Я хочу, чтобы пронестись только каталог (и ихние подфайлы), указанный пользователем. Я думал, используя задачи PropertyRegex, но я думал, что это уродливый способ сделать это.

ответ

2

Использование Еогеасп из antcontrib foreach:

ant -Ddirectory="dir1,dir3" 

<project name="build" default="zip" basedir="."> 
<!-- declare ant-contrib --> 
<taskdef resource="net/sf/antcontrib/antcontrib.properties"> 
    <classpath> 
    <pathelement location="${basedir}/ant-contrib-1.0b3.jar"/> 
    </classpath> 
</taskdef> 

<property name="root" value ="folder"/> 
<target name="zip"> 
    <delete file="${root}/archive.zip"/> 
    <foreach list="${directory}" param="folder" target="zipdir"/> 
</target> 

<target name="zipdir"> 
    <echo>${folder}</echo> 
    <zip destfile="${root}/archive.zip" update="true"> 
     <fileset dir="${root}"> 
      <include name="${folder}/**/*"/> 
     </fileset> 
    </zip> 
</target> 

+0

Awesome! Я не думал о свойствах обновления задачи zip, отличная идея! Благодаря! –

Смежные вопросы