Resolución de dependencias en plugins de Eclipse con Maven

En la lista de distribución de tycho, he visto una interesante discusión sobre cómo tener una dependencia a un jar en un plugin que se resuelva a través de Maven. Parece que no es problema hacer esto cuando se construye el artefacto, pero en desarrollo tiene que estar el jar forzosamente en el workspace o habrá problemas de compilación.

En Sidelab estamos comenzando a migrar algunos proyectos a Maven (puedes ver cómo lo hemos hecho en los proyectos Pascaline y Optsicom RES), y necesitamos tener un ojo puesto en este tipo de cuestiones. Concretamente utilizamos el plugin m2eclipse para Eclipse y tycho para construir artefactos PDE (plugins, features, repositorios p2).

En Pascaline, por ejemplo, tenemos un jar en uno de los plugins que me gustaría que se resolviese dinámicamente cuando haces un checkout del repositorio. Sé que puedo hacer esto cuando hago un build con Maven, porque hay formas de generar artefactos en previamente a la construcción para que sean utilizados en la compilación (como se comenta  en el mismo hilo), pero lo realmente interesante sería hacer un checkout del repositorio y que el plugin m2eclipse resolviera las dependencias materializando el jar desde el repositorio Nexus que tenemos instalado en SidelabCode. Actualmente, el jar, situado en una carpeta lib del plugin, está alojado también en el repositorio, por comodidad. Esta situación es desaconsejable y hace tedioso pasar de una versión a otra del mismo, porque hay que quitar un jar y sustituirlo por otro, pero sobre todo, no queda claro en ningún sitio qué versión del jar se está utilizando. Por supuesto el jar puede incluir en el nombre la versión, pero preferiría que el plugin declarara qué versión del jar necesita y esa versión fuera incorporada en el proyecto dinámicamente.

Creo que esto lo puede hacer Maven automáticamente, siempre que las dependencias se declaren en el POM. Pero en este caso la dependencia se especifica en el fichero build.properties del plugin, que es manejado por tycho. Este el problema principal del enfoque Manifest first frente al enfoque POM first. En el enfoque Manifest first la construcción está dirigida por tycho y es leída de los descriptores del plugin (Manifest, build.properties y plugin.xml). En el enfoque POM first, la configuración es leída del POM. De momento, por tanto, no existe una solución satisfactoria. Me pregunto si tycho podría proporcionar un goal que hiciera exactamente esto y que pudiera ejecutarse tras un checkout para materializar los jars/plugins/etc que conforman las dependencias del código descargado. ¿Alguna idea al respecto?

[UPDATE] En este ejemplo parecen hacer justamente eso: descargar un jar en una carpeta. Por lo visto esta acción hay que engancharla al lifecycle-mapping de m2e.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s