Come posso eco un nome di file per due volte con 'FileSet' e 'PathConvert'?
Domanda
ho questo semplice compito Ant che elenca tutti '.png' file in una cartella:
<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>
Questo stampa
[echo] A.png
[echo] B.png
Ma, quello che voglio è per i nomi dei file di apparire due volte su ogni riga.
[echo] A.png,A.png
[echo] B.png,B.png
Come posso fare questo?
(Questa domanda è un follow-up a Come faccio a stampare un insieme di file in un file, un nome di file per riga? )
Soluzione
Si potrebbe usare un regexp mapper (al posto del flatten) che implementa l'appiattimento e duplicazione. Questo è piuttosto semplicistico, ma potrebbe fare:
<mapper type="regexp" from=".*/(.*)" to="\1,\1" />
avrebbe bisogno di regolazione per il separatore di percorso locale.
meglio, però, utilizzare un chainedmapper al posto del appiattire:
<chainedmapper>
<mapper type="flatten" />
<mapper type="regexp" from="(.*)" to="\1,\1" />
</chainedmapper>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow