2011-11-04 85 views
5

Quiero construir mi archivo ear una vez y luego usar ant para cambiar algunas configuraciones en application.xml, archivos de propiedades, etc.¿Puede reemplazar texto en archivos dentro de jar/ear/war?

¿Hay alguna manera de hacer esto con hormiga?

[editar] Acabo de encontrar este

How do I modify a file in a jar file using ANT?

+1

AFAIK, no. Reemplazar tarea funciona en directorios. ¿Podrías descomprimir, reemplazar y volver a comprimir? – aishwarya

+0

¿Funciona la opción de actualización para lo que quieres? http://stackoverflow.com/questions/12059046/ant-ear-update-without-full-exploding-ear – peater

Respuesta

4

La única manera que puede modificar un archivo dentro de su frasco o del oído es utilizar la tarea <unzip>, utilice la tarea <replace> para modificar los campos en el archivo , y luego vuelva a descomprimir el archivo con la tarea <zip> o <jar>/<ear>.

Hay varias maneras en que puede manejar esto sin tener que descomprimir y rezip la oreja/tarro de archivos/guerra:

  • El método preferido es configurar el servidor de aplicaciones, por lo que pueden encontrar sus propiedades fuera de la oreja en sí. También es posible configurar el archivo application.xml para no utilizar directorios relativos al especificar ubicaciones en lugar de especificar ubicaciones desde la raíz de la máquina. Al eliminar la información del entorno incrustado de su oído, puede usar el mismo archivo earfile en todos sus entornos.

  • Desafortunadamente, no podemos hacer lo anterior y debemos proporcionar archivos de audio por separado para cada entorno. Usamos Jenkins como nuestro servidor de compilación continua. Cuando Jenkins hace nuestras construcciones, construimos múltiples oídos, uno para cada entorno, al mismo tiempo. De esta manera, a medida que pasamos de Dev a QA a ETAPA a Producción, podemos al menos referirnos al mismo número de compilación. Compilamos una vez, luego usamos el AntContrib <foreach> task para conectar el archivo earfile con la configuración correcta del archivo de propiedades y el archivo correcto application.xml. Usamos <filterset> en nuestra tarea <copy> para modificar las propiedades y application.xml a medida que construimos el oído.

+0

Gracias, también usamos jenkins y hemos considerado crear 3 o 4 archivos de audio pero estábamos esperando otra solución. Por cierto, el plugin build pipline es bastante bueno. – blank

0

Usted puede hacer algo como esto

<zip destfile="tmp.jar" > 
    <zipfileset src="lib/myjar.jar" excludes="org/example/My*.class" /> 
    <zipfileset dir="bin" includes="org/example/My*.class" /> 
</zip> 
<move file="tmp.jar" tofile="lib/myjar.jar"/> 

En este ejemplo se crea una tmp.jar usando myjar.jar como la fuente, pero excluyendo los CLASSÉES comenzando en el directorio Mi org/ejemplo. Luego agregamos nuestra nueva versión desde el directorio bin. Luego reemplazamos el archivo jar con nuestra nueva versión.

Cuestiones relacionadas