2009-07-19 7 views
5

Sto tentando di creare un elenco delimitato da virgole di file o directory nella directory corrente. Per esempio, supponiamo di avere la seguente struttura di cartelle: "Directory1, directory2"Creazione di un elenco di file delimitati da virgole con Ant

 
Root 
-- Directory1 
-- Directory2 
... 

voglio generare una variabile o una proprietà che contengono Ho provato a ripetere (utilizzando ant-contrib "per" attività) su un <dirset dir="." includes="*">, ma questo genera percorsi assoluti; Ho quindi estratto i nomi dei file utilizzando l'attività "basename", tuttavia a sua volta genera un'uscita proprietà. Poiché le proprietà sono immutabili, quello che ottengo in pratica è "Directory1, Directory1, ..."

C'è un modo più sicuro per farlo, o dovrò scrivere un'estensione Java per fare questo per me?

risposta

10

Il compito pathconvert può essere utilizzato per formattare un dirset con separatori arbitrarie:

<dirset id="dirs" dir="." includes="*"/> 
<pathconvert dirsep="/" pathsep="," property="dirs" refid="dirs"/> 
<echo message="${dirs}"/> 
+0

Ci sono voluti un po 'di più (usando globmapper e alcuni altri hack minori) e sono abbastanza sicuro che tu abbia commutato dirsep con path nel tuo esempio, ma tu mi hai indirizzato nella direzione esatta di cui avevo bisogno. Grazie! –

+0

sembra che i valori "dirsep" e "percorsi" siano scambiati. Penso che tu intendessi dirsep = "/" pathsep = "," – iTake

4

Proprio confermando la risposta di Jörn era esattamente quello che mi serviva (come punto di partenza) pure.

<dirset id="dirset.sandbox" dir="${sandbox.dir}" includes="*"> 
    <exclude name="output"/> 
</dirset> 
<pathconvert pathsep=" " property="dirs.sandbox" refid="dirset.sandbox"> 
    <mapper type="flatten"/> 
</pathconvert> 
<echo message="[*** the sandbox dir list is ${dirs.sandbox} ***]"/> 

sandbox.dir è un percorso assoluto simile a/root/build/area di lavoro e contiene diverse sottodirectory. L'output è un elenco separato da spazi di quelle directory.

Problemi correlati