2009-03-09 5 views
1

Comment générer dynamiquement un ensemble de fichiers en fonction de l'entrée de l'utilisateur?Comment "dynamiquement" générer un ensemble de fichiers?

Étant donné ces répertoires:

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

et que l'appel en ligne de commande:

ant -Ddirectory="dir1 dir3" 

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

Je veux zip uniquement le répertoire (et les leurs sous-fichiers) spécifiée par l'utilisateur. J'ai pensé utiliser les tâches de PropertyRegex mais j'ai pensé que c'était une façon moche de le faire.

Répondre

2

Utilisation de foreach 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

Impressionnant! Je n'ai pas pensé à la propriété de mise à jour de la tâche zip, bonne idée! Merci! –

Questions connexes