Generar un archivo WAR de Grails mucho más pequeño.
Cuando generamos un archivo WAR de una aplicación Grails nos damos cuenta de que este puede ser muy grande. Si estamos utilizando Grails 2.0, por ejemplo, el archivo generado con los plugins instalados por defecto pesa más de 30MB, lo cual no es un problema real de almacenaje con los estándares actuales, pero si lo es a la hora de subirlo vía ftp a un servidor productivo, por ejemplo.
Hacer “deploys manuales” en ambientes productivos no es lo más recomendado, para desplegar aplicaciones en ambientes productivos lo mejor es hacerlo a través de algún software que te permita hacer Integraciones Continuas, Bamboo y CloudBees son buenos ejemplos, sin embargo, no es objeto de este post ahondar en este tema.
En el caso más común, normalmente generamos un archivo WAR con nuestra aplicación y lo subimos vía ftp o http para después desplegarlo en nuestro contenedor, sin embargo, si usamos la opción -nojars durante la construcción del WAR Grails nos construirá un archivo mucho, mucho más ligero:
$grails war -nojars
Para un WAR con ambiente productivo:
$grails prod war -nojars
¿Cuál es el truco?
Ninguno, simplemente Grails construye un WAR sin las librerías que normalmente estarían en la carpeta WEB-INF/lib dentro del WAR, dejándonos la tarea a nosotros de subir estas librerías directamente en nuestro contenedor de aplicaciones (en la carpeta tomcat/lib por ejemplo). Cabe mencionar que no solo tendremos que subir manualmente estas librerías al contenedor, también tendremos que mantenerlas actualizadas.
¿Y la primera vez?
Existen varias formas de generar las librerías la primera vez, sin embargo, la más simple es crear el WAR completo una sola vez, desplegarlo y copiar las librerías necesarias.
Esperamos que esto les ayude y reduzca su consumo de ancho de banda.