2010-06-02 10 views
2

Je cette simple tâche Ant qui répertorie tous les « .png » des fichiers dans un dossier:Comment puis-je renvoyer deux fois un nom de fichier en utilisant 'FileSet' et 'PathConvert'?

<target name="listimages"> 
    <!-- Assume files a A and B --> 
    <fileset id="dist.contents" dir="${basedir}"> 
     <include name="**/*.png"/> 
    </fileset> 

    <pathconvert pathsep="${line.separator}" 
       property="prop.dist.contents" 
       refid="dist.contents"> 
     <mapper type="flatten" /> 
     <map from="${basedir}" to=""/> 
    </pathconvert> 
    <echo>${prop.dist.contents}</echo> 
</target> 

Imprime

[echo] A.png 
[echo] B.png 

Mais, ce que je veux est pour les noms de fichiers apparaissent deux fois sur chaque ligne.

[echo] A.png,A.png 
[echo] B.png,B.png 

Comment puis-je faire cela?

(Cette question fait suite à How can I print a fileset to a file, one file name per line?)

Répondre

1

Vous pouvez utiliser un regexp mapper (au lieu du Aplatir) qui met en œuvre l'aplanissement et la duplication. Ceci est assez simpliste, mais pourrait faire:

<mapper type="regexp" from=".*/(.*)" to="\1,\1" /> 

Vous aurez besoin d'ajuster pour votre séparateur de chemin local.

Mieux cependant, utiliser un chainedmapper à la place du Aplatir:

<chainedmapper> 
    <mapper type="flatten" /> 
    <mapper type="regexp" from="(.*)" to="\1,\1" /> 
</chainedmapper>