2010-03-10 16 views
10

Ejemplo:¿Cómo puedo cambiar los valores de propiedad en un archivo usando Ant? entrada

SERVER_NAME=server1 
PROFILE_NAME=profile1 
... 

Ejemplo de salida:

SERVER_NAME=server3 
PROFILE_NAME=profile3 
... 

Este archivo utilizará en applicationContext.xml. He intentado

<copy file="${web.dir}/jexamples.css_tpl" 
     tofile="${web.dir}/jexamples.css" > 
    <filterchain> 
     <replacetokens> 
      <token key="SERVER_NAME" value="server2"/> 
      <token key="PROFILE_NAME" value="profi"/> 

     </replacetokens> 
    </filterchain> 
</copy> 

pero no funciona.

Respuesta

15

Su filterchain está bien, pero el archivo de origen debe tener este aspecto:

[email protected][email protected] 
[email protected][email protected] 

Este código (como proporcionada por usted)

<copy file="${web.dir}/jexamples.css_tpl" 
     tofile="${web.dir}/jexamples.css" > 
    <filterchain> 
     <replacetokens> 
      <token key="SERVER_NAME" value="server2"/> 
      <token key="PROFILE_NAME" value="profi"/> 
     </replacetokens> 
    </filterchain> 
</copy> 

reemplaza las fichas y le da

SERVER_NAME=server2 
PROFILE_NAME=profi 

Si desea mantener el archivo original como lo tienes ahora, de una manera sería utilizar replaceregex:

<filterchain> 
    <tokenfilter> 
    <replaceregex pattern="^[ \t]*SERVER_NAME[ \t]*=.*$" 
        replace="SERVER_NAME=server2"/> 
    <replaceregex pattern="^[ \t]*PROFILE_NAME[ \t]*=.*$" 
        replace="PROFILE_NAME=profi"/> 
    </tokenfilter> 
</filterchain> 

Esto reemplazaría cada línea que comienza con SERVER_NAME= por SERVER_NAME=server2 (lo mismo para PROFILE_NAME=). Esto le devolverá la salida que describió.

[ \t]* es ignorar el espacio en blanco. solución

+0

es posible cambiar el valor de la propiedad sin fichas @@? – Andrew

+0

Sí, ver mi respuesta actualizada. –

+0

¿Cómo puedo pasar uno o más argumentos a la hormiga, no quiero usar archivos de origen para establecer la var y el valor, por ejemplo, mostrar 'SERVER_NAME = server2' Espero pasar los argumentos cuando ejecuto el archivo de compilación ant en eclipse. – janwen

5

Cleaner está utilizando "propertyfile" hormiga tarea - ver http://ant.apache.org/manual/Tasks/propertyfile.html

<copy file="${web.dir}/jexamples.css_tpl" 
    tofile="${web.dir}/jexamples.css" /> 
<propertyfile file="${web.dir}/jexamples.css"> 
    <entry key="SERVER_NAME" value="server2"/> 
</propertyfile> 
+0

Esta solución funciona perfectamente para mí. Quería hacer que esto suceda para el archivo '.properties' –

+0

Gran solución.Gracias – plinyar

Cuestiones relacionadas