Il compito pathconvert è probabilmente il modo migliore per andare nella maggior parte dei casi. Ma crea un piccolo problema quando l'albero delle directory è molto grande e si utilizza l'attività ecoproprietà. Con un albero di directory molto grande, la stringa generata da pathconvert può essere enorme. Quindi ecoproprietà spruzza l'enorme stringa, rendendo l'output più difficile da lavorare. Io uso un macrodef su Linux che crea una proprietà impostata a "1" se ci sono file nella directory:
<macrodef name="chkDirContents" >
<attribute name="propertyName" />
<attribute name="dirPath" />
<attribute name="propertyFile" />
<sequential>
<exec executable="sh" dir="." failonerror="false" >
<arg value="-c" />
<arg value='fyles=`ls -1 @{dirPath} | head -1` ; if [ "$fyles" != "" ] ; then echo @{propertyName}=1 > @{propertyFile} ; fi' />
</exec>
</sequential>
</macrodef>
<target name="test" >
<tempfile destdir="." property="temp.file" deleteonexit="true" />
<chkDirContents propertyName="files.exist" dirPath="./target_dir" propertyFile="${temp.file}" />
<property file="${temp.file}" />
<echoproperties/>
</target>
Esecuzione il bersaglio "test" genererà la seguente riga di echoproperties se ci sono file nella ./ target_dir/directory:
[echoproperties] files.exist=1
cosa "test" fa: genera un nome di file temporaneo, $ {} temp.file, che può poi essere utilizzato come un file di proprietà. Esegue quindi macrodef, che chiama la shell per controllare il contenuto della directory dirPath. Se ci sono file o directory in dirPath, assegna la proprietà propertyName al valore 1 nel file temporaneo. Quindi legge il file e imposta la proprietà fornita nel file. Se il file è vuoto, nessuna proprietà è definita.
Si noti che il file temporaneo può essere riutilizzato per le chiamate successive di macrodef se lo si desidera. D'altra parte, ovviamente, una volta che una proprietà è impostata, è immutabile.
fonte
2013-08-30 15:12:24
che suona perfetta - Muoio dalla voglia di fare un tentativo. Se solo avessi fatto la domanda 3 anni fa, avrei risparmiato tantissimo tempo. acclamazioni, Ian – ianmayo