servicio proyecto ejemplo ejecutar desde crear consola compile como java ant

java - proyecto - Cómo usar comodines en el comando Disponible de Ant



java ant windows (3)

Estoy usando un script de compilación Ant para clasificar mi aplicación basada en Eclipse para su distribución.

Un paso de la compilación es verificar que las bibliotecas correctas estén presentes en las carpetas de compilación. Actualmente utilizo el comando Ant para esto. Desafortunadamente, tengo que enmendar el script cada vez que cambio a una nueva compilación de Eclipse (ya que los números de versión se actualizarán).

No necesito verificar los números de versión, solo necesito verificar que el archivo esté allí.

Entonces, ¿cómo verifico para:

org.eclipse.rcp_3.5.0.*

en lugar de:

org.eclipse.rcp_3.5.0.v20090519-9SA0FwxFv6x089WEf-TWh11

usando hormiga?

Saludos, Ian


La tarea pathconvert es probablemente la forma preferida 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 cadena, lo que hace que sea más difícil trabajar con la salida. Uso un macrodef en Linux que crea un conjunto de propiedades a "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>

La ejecución del destino de "prueba" generará la siguiente línea de propiedades ecológicas si hay archivos en el directorio ./target_dir/:

[echoproperties] files.exist=1

Lo que hace "prueba": Genera un nombre de archivo temporal, $ {temp.file}, que luego se puede usar como un archivo de propiedades. A continuación, ejecuta el macrodef, que llama al shell para comprobar el contenido del directorio dirPath. Si hay algún archivo o directorio en dirPath, asigna a la propiedad propertyName un valor de 1 en el archivo temporal. Luego 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 llamadas posteriores de macrodef, si así lo desea. Por otro lado, por supuesto, una vez que se establece una propiedad, es inmutable.


Te refieres a algo como (basado en la tarea pathconvert , después de esta idea ):

<target name="checkEclipseRcp"> <pathconvert property="foundRcp" setonempty="false" pathsep=" "> <path> <fileset dir="/folder/folder/eclipse" includes="org.eclipse.rcp_3.5.0.*" /> </path> </pathconvert> </target> <target name="process" depends="checkEclipseRcp" if="foundRcp"> <!-- do something --> </target>


Un enfoque un poco más corto y más directo con resourcecount condición de resourcecount :

<target name="checkEclipseRcp"> <condition property="foundRcp"> <resourcecount when="greater" count="0"> <fileset file="/folder/folder/eclipse/org.eclipse.rcp_3.5.0.*"/> </resourcecount> </condition> </target> <target name="process" depends="checkEclipseRcp" if="foundRcp"> <!-- do something --> </target>