La tarea pathconvert es probablemente la mejor forma de ir en la mayoría de los casos. Pero crea un pequeño problema cuando el árbol de directorios es muy grande y uno usa la tarea echoproperties. Con un árbol de directorios muy grande, la cadena generada por pathconvert puede ser enorme. Luego, echoproperties rocía la enorme cuerda, haciendo que la salida sea más difícil de trabajar. Yo uso un macrodef en Linux que crea una propiedad establecida en "1" si hay archivos en el directorio:
<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>
ejecutando el objetivo de "prueba" generará la siguiente línea echoproperties si hay archivos en el ./ target_dir/directorio:
[echoproperties] files.exist=1
Qué "prueba" hace: se genera un nombre de archivo temporal, $ {} temp.file, que luego puede usarse como un archivo de propiedades. A continuación, ejecuta el macrodef, que llama al shell para comprobar el contenido del directorio dirPath. Si hay archivos o directorios en dirPath, le asigna a la propiedad propertyName un valor de 1 en el archivo temporal. A continuación, lee el archivo y establece la propiedad dada en el archivo. Si el archivo está vacío, no se define ninguna propiedad.
Tenga en cuenta que el archivo temporal podría reutilizarse para las siguientes llamadas al macrodef si así lo desea. Por otro lado, por supuesto, una vez que se establece una propiedad, es inmutable.
que suena perfecto - Me muero por probarlo. Si hubiera hecho la pregunta hace 3 años, habría ahorrado mucho tiempo. aplausos, Ian – ianmayo