2011-06-16 10 views
11

Estoy usando Ant 1.8.1. Si pasaba en una discusión en la línea de comandos ...Ant: ¿Cómo configuro las propiedades de una lista separada por comas pasada en la línea de comandos?

-DenableProperties=abc,def,ghi,jkl 

¿Cómo se configura propiedades individuales (a verdadero/falso) en mi script Ant?

<property name="abc" value="???" /> 
<property name="def" value="???" /> 

Tenga en cuenta que en el ejemplo anterior, me gustaría Ant para tener acceso a una propiedad "$ {} abc" que se establece en true, mientras que si se trató de acceder a la propiedad "$ {} MNO "esa propiedad sería falsa, o al menos algún valor que no sea verdadero".

Gracias, - de Dave

Respuesta

13

No se puede pensar en una manera de hacer esto en el núcleo de la hormiga. Puedes hacerlo con el For task de ant-contrib.

<project default="test"> 

    <taskdef resource="net/sf/antcontrib/antlib.xml"> 
    <classpath> 
     <pathelement location="C:/lib/ant-contrib/ant-contrib-1.0b3.jar"/> 
    </classpath> 
    </taskdef> 

    <target name="test"> 
    <for list="${enableProperties}" param="prop"> 
     <sequential> 
     <property name="@{prop}" value="true"/> 
     </sequential> 
    </for> 
    <for list="${enableProperties}" param="prop"> 
     <sequential> 
     <echo message="@{prop}=${@{prop}}"/> 
     </sequential> 
    </for> 
    </target> 

</project> 

Salida:

$ ant -DenableProperties=abc,def,ghi,jkl 
Buildfile: build.xml 

test: 
    [echo] abc=true 
    [echo] def=true 
    [echo] ghi=true 
    [echo] jkl=true 

BUILD SUCCESSFUL 
Total time: 0 seconds 
1

cómo decidir cuándo un artículo de su propiedad $ enableproperties se pone a falso o verdadero? Algunos criterios
missin ..
Desde mi entendimiento de su pregunta que usted podría intentar algo así, mi solución se basa en Ant plugin Flaka

empezando con la hormiga -f demo.xml -Denableproperties = abC# t, def # t, ghi , jkl # t, mno
significa que todos los elementos de la lista que debe tener el valor true en el script tiene que ser propertyname # t otros
se establece en false salida

<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka"> 

    <fl:for var="p" in="split('${enableproperties}', ',')"> 
     <fl:let>#{split(p, '#')[0]} := #{split(p, '#')[1] == 't' ? 'true' : 'false'}</fl:let> 
    </fl:for> 

    <echo> 
$${abc} = ${abc} 
$${def} = ${def} 
$${ghi} = ${ghi} 
$${jkl} = ${jkl} 
$${mno} = ${mno} 
    </echo> 

</project> 

[echo] ${abc} = true 
[echo] ${def} = true 
[echo] ${ghi} = false 
[echo] ${jkl} = true 
[echo] ${mno} = false 

Divulgación = Estoy participando como confirmador en el proyecto Flaka

Cuestiones relacionadas