miércoles, 11 de noviembre de 2009

Acceder a variables de entorno desde Ant en Eclipse

En este post os comentaré como acceder a una variable de entorno con la interfaz de ant en eclipse. Asumo que en este punto teneis conocimientos avanzados de ant puesto que omitiré las explicaciónes más básicas acerca de esta herramienta.

Lo que quiero conseguir es obtener información desde el script build.xml información de las variables de entorno, para poder -en mi caso- desplegar una aplicación en el contenedor de aplicaciones Tomcat.
¿Cómo se despliega una aplicación en Tomcat? Basta con copiar el archivo descritor de la aplicación Web (war) en direcctorio $CATALINA_HOME\webapps. Por supuesto puedo hacer que ant genere el war y lo copie directamente a la carpeta específica en la que está instalado Tomcat. Sin embargo esta solución no es válida cuando trabajamos en equipo y compartimos el mismo escript en un repositorio de código.
Para ello hace falta utilizar la variable de entorno $CATALINA_HOME.
Para acceder a variables de entorno con ant basta con definir una propiedad:
<property environment="env"/>

Y acceder a ella como se muestra en el siguiente ejemplo
<copy file="${war}" todir="${env.CATALINA_HOME}/${tomcat.webapps.dir}" />
De manera que al tener definida la variable de entorno CATALINA_HOME tenemos acceso a ella desde ant. Sin embargo, Eclipse como la mayoría de los IDES crea un entorno-burbuja y parece no hacer mucho caso a la configuración del sistema.
De hecho, este escript lanzado desde línea de comando funciona correctamente y lanzado desde la interfaz ant en eclipse no.
Es aquí donde tenemos que entrar en la parte de configuración de elipse:
Hay que crear una configuración de ejecucion:

  1. En la pestaña Outline, hacemos click con el botón derecho en el target de ant que queramos ejecutar y seleccionamos  Ant Build...
  2. Se abre una ventana de diálogo con la configuración de ejecución del target de ant.
  3. Para diferenciar esta configuración de ejecución de otras escribimos un nombre, os sugiero algo del estilo: nombredelproyecto build.xml [environment enabled] 
  4. En la pestaña Target pulsamos add y añadimos la variable de entorno. En nuetro caso CATALINA_HOME.
A partir de ahora, cada vez que ejecutemos un target de ant y no sólo aquel target para el que hemos realizado este proceso, nos aparecerá la opción de seleccionar la configuración de lanzamiento nombredelproyecto build.xml [environment enabled].

Ya hemos conseguido hacer lo que queríamos, sin embargo, ahora es molesto que siempre me aparezcan dons configuraciónes de lanzamiento de ant si siempre vamos a utilizar la misma.

Eclipse tiene un gestor de estas configuraciones al que podemos acceder desde Run ->External Tools -> External Tools...





En la ventana de la izquerda aparecerá una visualización en arbol de todas las configuraciones de ejecución para las herramientas externas que tengamos instaladas. En nuestro caso sólo aparece Ant.

  1. Si desplegamos Ant podemos ver la configuración recientemente creada nombredelproyecto build.xml [environment enabled] así como la creada automáticamente por eclipse para cada proyecto en que hemos ejecutado un target de Ant con el nombre nombredelproyecto build.xml
  2. Podemos eliminar aquellas configuraciones que no queramos utilizar así como modificar las opciones de cada una.

Levamos Anclas

¡Hola a Todos! Aquí comienza mi andadura como blogger aficionado. Verdaderamente no se a dónde me llevará ni qué me deparará pero hacía tiempo que quería comenzar esta aventura y por fin me he decidido a escribir mi primer blog.

En él quiero recoger todos aquellos hitos, descubrimientos, logros que voy realizando realizando mientras trabajo y que están relacionados con eclipse. Estoy seguro que a vosotros también os ha pasado que pasais mucho tiempo trabajando en conseguir configurar eclipse para que se integre con un cierto componente, con un servidor, con otra herramienta y al final o no hay resultados satisfactorios o el tiempo invertido es excesivo y no ha merecido la pena.

Pues bien, aquí quiero compartir todos estos logros para evitar que otra gente emplete demasiado tiempo en algo que no ha conseguido encontrar en internet.

Quizá algún día escriba artículos sobre las nuevas distribuciones de Eclipse, revisiones de los nuevos pluggins, pero por ahora me limitaré a recoger "cosas que se pueden hacer con elipse".