eclipse maven nexus p2 tycho

eclipse - ¿Herramienta para gestionar/alojar repositorios propios de p2?



maven nexus (2)

Nuestra compañía usa Maven. Usamos el administrador de repositorios Nexus para almacenar nuestras instantáneas y lanzamientos.

Actualmente, estamos desarrollando un producto basado en Eclipse. Usamos Tycho para hacer eso.

El problema es el siguiente: en nuestro producto basado en Eclipse tenemos muchas características. Nuestra idea es construir cada característica (o grupo de características) por separado y ponerlas en repositorios internos de p2. Cuando una característica requiere otra característica, apuntamos la plataforma objetivo al repositorio interno necesario de p2.

Actualmente, creamos aplicaciones con Tycho. Hacemos que nuestras funciones sean "implementables", por lo que Tycho produce un sitio P2 en el target . Llevamos ese sitio P2 a nuestro servidor y luego ejecutamos Eclipse FeaturesAndBundlesPublisher , que fusiona esa característica recientemente construida con un repositorio P2. Como resultado, tenemos un repositorio interno de P2 que tiene todas las versiones de la función requerida.

Encontramos que este proceso es demasiado engorroso. ¿Hay alguna herramienta como Nexus, que sería más conveniente?

UPD .: Hay una discusión sobre la lista de usuarios de Tycho


Con el complemento Unzip Repository Nexus , puede usar Nexus para intercambiar artefactos binarios entre versiones de Tycho.

  • El proyecto Tycho A publica sus artefactos como un proyecto normal de Maven: el proyecto está construido con mvn clean deploy , que carga los artefactos del proyecto en su depósito Maven de despliegue en el Nexus. El único requisito especial es que el proyecto construya un repositorio p2 . La forma recomendada de hacerlo es un módulo eclipse-repository , pero una "función desplegable" también debería funcionar en la mayoría de los casos.

  • En su Nexus, solo necesita la siguiente configuración única: para implementar el repositorio de Maven (o un "Grupo de repositorio" que incluye ese repositorio), debe agregar un repositorio virtual de tipo "Descomprimir repositorio". Este repositorio virtual muestra los artefactos zip desde el repositorio de despliegue en forma no empaquetada.

    Ejemplo: Si el archivo zip del repositorio p2 del proyecto A está en el depósito de despliegue de Maven en http://nexus.corp/nexus/repositories/build.milestones/corp/example/project-a/project-a-repo/1.0.0/project-a-repo-1.0.0.zip , estará disponible en el formato de repositorio p2 estándar en el repositorio Unzip en http://nexus.corp/nexus/repositories/build.milestones.unzip/corp/example/project-a/project-a-repo/1.0.0/project-a-repo-1.0.0.zip-unzip/ .

  • El proyecto B de Tycho puede hacer referencia a los artefactos del proyecto A agregando la última URL a su plataforma objetivo , por ejemplo, en un archivo de definición de destino.

En el ejemplo anterior, el proyecto B hace referencia a una versión de lanzamiento del proyecto A. El mismo enfoque también funciona para instantáneas porque el repositorio Unzip tiene soporte para versiones "simbólicas" , como 1.1.0-SNAPSHOT para el último 1.1.0-SNAPSHOT implementado o incluso simplemente SNAPSHOT para la versión más alta general. Utilizando estas versiones simbólicas, el Proyecto B puede, por ejemplo, en su propia construcción de CI, hacer referencia al proyecto de resultados de construcción de CI A agregando las URL de repositorio p2 resultantes (¡estables!) En su plataforma de destino.

Disclaimer : El complemento Unzip Repository Nexus es parte del proyecto Tycho, del cual soy committer.


Quizás esto es un poco tarde, pero actualmente estoy trabajando en un administrador de repositorio de código abierto (EPL) que admite el flujo de trabajo de implementar en un repositorio con maven y tycho, y consumirlo como repositorio P2.

También es posible implementar paquetes creados por maven (no maven tycho) y los metadatos P2 se generarán automáticamente.

El proyecto se llama "Package Drone" y se aloja en github . También hay un breve video de presentación .