2012-02-09 19 views
6

Estoy usando ANT 1.7.0¿Cómo añado una cadena a una propiedad en hormiga?

Me gustaría crear un objetivo que en la llamada, agregará texto a una cadena (guardado en la propiedad).

por ejemplo:

<property name="str.text" value="" /> 

<target name="append.to.property" > 
    <property name="temp.text" value="${str.text}${new.text}" /> 
    <property name="str.text" value="${temp.text}" /> 
</target> 

El problema es que no puedo sobrescribir el valor de la propiedad en un objetivo y leer el valor cambiado en otro objetivo.

¿Cómo añado una cadena a una propiedad en hormiga?

+1

posible duplicado de (http [Cómo sobrescribir la propiedad de hormiga?]: // stackoverflow. com/questions/1866729/how-to-over-write-the-property-in-ant) – skaffman

Respuesta

11

No se puede cambiar el valor de la propiedad en Ant.

Puede usar la tarea variable Ant Contrib (consulte http://ant-contrib.sourceforge.net/tasks/tasks/variable_task.html) que proporciona propiedades mutables.

<property name="str.text" value="A" /> 
<property name="new.text" value="B"/> 

<target name="append.to.property" > 
    <var name="temp.text" value="${str.text}${new.text}" /> 
    <var name="str.text" value="${temp.text}" /> 
</target> 

<target name="some.target" depends="append.to.property"> 
    <echo message=${str.text}/> 
</target> 
1

Normalmente, las propiedades en hormiga son inmutables una vez establecidas. Con Ant addon Flaka puede cambiar o sobrescribir propiedades exisiting - incluso UserProperties (aquellas propiedades establecidas a través de comandos -Dkey = valor), es decir, crear un macrodef y usarlo como que:

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

<property name="foo" value="bar"/> 

<macrodef name="createproperty"> 
    <attribute name="outproperty"/> 
    <attribute name="input"/> 
    <sequential> 
    <fl:let> @{outproperty} ::= '@{input}'</fl:let> 
    </sequential> 
</macrodef> 

<!-- create new property --> 
<createproperty input="${foo}bar" outproperty="fooo"/> 

    <echo>$${fooo} => ${fooo}</echo> 

    <echo>1. $${foo} => ${foo}</echo> 

<!-- overwrite existing property --> 
<createproperty input="foo${foo}" outproperty="foo"/> 

    <echo>2. $${foo} => ${foo}</echo> 

</project> 

salida

[echo] ${fooo} => barbar 
[echo] 1. ${foo} => bar 
[echo] 2. ${foo} => foobar 

alternativamente puede usar algún lenguaje de script (Groovy, Javascript, JRuby ..) y usar ant api:
project.setProperty(String name, String value) para sobrescribir una propiedad.

0

Si supone que desea agregar una cadena en el valor de propiedad existente, siga los pasos a continuación.

  1. Tenemos que cargar el archivo de propiedad que necesitamos para cambiar un valor en él.
  2. Obtenga un valor de propiedad existente del archivo en la propiedad de temperatura mediante la tarea de propiedad ANT.
  3. Luego haga el proceso normal de cambiar el valor de la propiedad.

1Property file 1 2string to append 3ANT Script 4Final Property value

Para Referencia: Wordpress Link

Cuestiones relacionadas