[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Proyectos: AntDep



Hola a todos,

No es mi intención utilizar Mindfood para publicar "announces" de los 
proyectos que desarrollo, pero me interesa recibir feedback sobre los mismos.

En los últimos meses he dado forma a algunas ideas que llevaba relegando a un 
segundo plano en favor de unos objetivos más ambiciosos. En ese sentido, me 
he dado un pequeño "respiro" :).
En particular, he dedicado mi tiempo a pequeños proyectos, todos destinados a 
mejorar la metodología de desarrollo.
Por un lado, no estaba satisfecho con cómo eran gestionadas las dependencias 
de los proyectos. Estoy relativamente conforme con Maven, pero no existía una 
forma sencilla de aprovechar esa información desde Ant, que no derivara en 
una gestión redundante.
Mantener Maven actualizado requiere disciplina, y si se presenta como 
"opcional", entonces con el tiempo deja de contener información válida. 
Busqué por sourceforge y encontré una tarea de Ant (Greebo[1]) que permitía 
definir los classpath y mantener sincronizados los repositorios locales de 
Maven, lo cual significaba un pequeño paso adelante.
Sin embargo, seguía obligado a mantener dos archivos que contenían la misma 
información, por duplicado: project.xml de Maven y un dependencies.xml de 
Ant, utilizado para copiar los archivos (que se obtenían de repositorios de 
Maven local o remotos).
Eso me motivó para desarrollar un pequeño plugin de Maven, que generara el 
citado dependencies.xml a partir del project.xml. También aproveché para que 
generara lo necesario para ejecutar BeanShell desde Emacs correctamente, en 
función del proyecto. Dicho proyecto, denominado MavenDep, incluye además 
unas pequeñas mejoras, tanto sobre Greebo como sobre Maven.
Por un lado, utiliza enlaces simbólicos en sistemas Unix, en lugar de copiar 
archivos incondicionalmente como hace Greebo. Por otro, define unos metadatos 
sobre cada una de las dependencias definidas en Maven, para indicar qué tipo 
de papel juega cada una en el proyecto: si es necesaria para compilar, para 
ejecutar el proyecto, para pasar las pruebas, o para ejecutar alguna 
herramienta de desarrollo.

El resultado ha demostrado ser bastante útil en la práctica, y ha permitido 
tener más control sobre de qué depende exactamente cada proyecto y por qué.

Estoy aún en proceso de publicar los proyectos usando un servicio de hosting 
propio, por eso no os indico la url. Espero poder tenerlo presentable en 
breve.

Saludos,
Jose.

[1] http://greebo.sf.net