2011-05-04 12 views
5

No debo comprender correctamente el atributo unless. Tengo un archivo de propiedades que tiene una propiedad de la siguiente manera:Ant a menos que el atributo no funcione?

module.project.enabled=false 
module.finance.enabled=true 

Y en mi fichero de construcción Ant Tengo el siguiente pieza

<echo message="Finance module enabled is ${module.finance.enabled}"/> 
<echo message="Project module enabled is ${module.project.enabled}"/> 
<javac srcdir="src" destdir="${classes}" debug="true"> 
    <classpath> 
     <pathelement path="src"/> 
     <fileset dir="web/WEB-INF/lib" includes="*.jar"/> 
     <fileset dir="lib" includes="*.jar"/> 
     <fileset dir="${GWT.HOME}" includes="gwt-user.jar,gwt-servlet.jar"/> 
    </classpath> 
    <exclude name="bla/finance/*.java" unless="${module.finance.enabled}"/> 
    <exclude name="bla/project/*.java" unless="${module.project.enabled}"/> 
</javac> 

Al ejecutar mi tarea ant las propiedades parecen ser leídos

[echo] Finance module enabled is true 
[echo] Project module enabled is false 

pero cuando miro el directorio ${classes} lo que habría esperado ver no hay clases en el paquete de proyectos y clases en el paquete de financiación, pero por desgracia parece ser incluído udiendo ambos paquetes?

+1

Solo he visto 'unless' (y' if') usado en tareas, nunca en elementos de configuración anidados, no sé si esto * debería * funcionar. –

+0

¿Tiene 1.8 o más? – JoseK

+0

No, estoy usando 1.7.1 –

Respuesta

10

Para Ant 1.7 y anteriores, los atributos if y unless solo comprueban si se establece una propiedad. En realidad, no controlan el valor. De hecho, puede configurarlo para cualquier cosa, y eso se evaluará como verdadero para if y falso para unless. Del mismo modo, si no lo configura en absoluto, obtendrá un valor falso para if y verdadero para unless.

En cualquier caso, no tengo conocimiento de que if y unless estén disponibles para <exclude>.

+3

A partir de [Ant 1.8.0] (http://ant.apache.org/manual/properties.html#if+unless) un valor de verdadero (o en o sí) lo hará habilite el elemento, mientras que falso (o desactivado o no) lo desactivará. – JoseK

+0

@JoseK: oh whoa, ni siquiera me di cuenta de esa mejora. Actualicé mi respuesta para reflejar que lo que dije solo se aplica a 1.7 y anteriores. – WhiteFang34

+0

Muchas gracias, funciona en

Cuestiones relacionadas