turnos simulador puntos matricula licencias ant

simulador - ant turnos



Cómo configurar una propiedad Ant solo si está desarmada (5)

Ant lo hace por defecto; si la propiedad ya está configurada; configurarlo nuevamente no tiene ningún efecto:

<project name="demo" default="demo"> <target name="demo" > <property name="aProperty" value="foo" /> <property name="aProperty" value="bar" /> <!-- already defined; no effect --> <echo message="Property value is ''${aProperty}''" /> <!-- Displays ''foo'' --> </target> </project>

Da

/c/scratch> ant -f build.xml Buildfile: build.xml demo: [echo] Property value is ''${aProperty}'' BUILD SUCCESSFUL Total time: 0 seconds /c/scratch> ant -f build.xml Buildfile: build.xml demo: [echo] Property value is ''foo'' BUILD SUCCESSFUL

Las propiedades no se pueden redefinir; para hacer esto necesitas usar algo como la tarea variable de ant-contrib .

No puedo averiguar cómo configurar una propiedad Ant con la condición de que no se haya establecido (es decir, no está definida en el archivo de propiedades y debe ser automáticamente la predeterminada).

Hasta ahora, solo tengo el siguiente código:

<condition property="core.bin" value="../bin"> <isset property="core.bin"/> </condition>

Pero esto solo parece funcionar si el valor está definido en una etiqueta <property> .

¿Alguien sabe cómo configurar condicionalmente una propiedad por primera vez si actualmente no está configurada?


La forma más fácil de hacer lo que quieres:

<if> <not> <isset property="your.property"/> </not> <then> <property name="your.property" value="your.value"/> </then> </if>


Las propiedades en Ant son inmutables. Después de definido, no pueden ser cambiados.

Pero el paquete Ant Contrib ofrece la tarea variable . Funciona como una propiedad, pero los valores se pueden modificar y deshacer. Ejemplo de la documentación de la tarea variable :

<var name="x" value="6"/> <if> <equals arg1="${x}" arg2="6" /> <then> <var name="x" value="12"/> </then> </if> <echo>${x}</echo> <!-- will print 12 -->


Se admite el uso de ''else'' dentro de: https://ant.apache.org/manual/Tasks/condition.html para cumplir con su propósito exacto.

más

The value to set the property to if the condition evaluates to false. By default the property will remain unset. Since Apache Ant 1.6.3

Entonces cambie a:

<condition property="core.bin" else="../bin"> <isset property="core.bin"/> </condition>


Simplemente puede establecer la propiedad con la propiedad-tarea. Si la propiedad ya está configurada, el valor no cambia, porque las propiedades son inmutables.

Pero también puede incluir "no" en su condición:

<condition property="core.bin" value="../bin"> <not> <isset property="core.bin"/> </not> </condition>