Инструмент для управления / хостинга собственных репозиториев p2?

Наша компания использует Maven. Мы используем менеджер репозитория Nexus для хранения наших снимков и выпусков.

В настоящее время мы разрабатываем продукт на основе Eclipse. Мы используем Tycho, чтобы сделать это.

Проблема заключается в следующем: в нашем продукте на основе Eclipse у нас много функций. Наша идея - построить каждую функцию (или группу функций) отдельно и поместить их во внутренние репозитории p2. Когда для одной функции требуется другая функция, мы указываем целевой платформе необходимый внутренний репозиторий p2.

В настоящее время мы создаем приложение с Tycho. Мы делаем наши функции "развертываемыми", поэтому Tycho создает сайт P2 в target, Мы помещаем этот сайт P2 на наш сервер и затем запускаем Eclipse FeaturesAndBundlesPublisher, которая объединяет эту недавно созданную функцию с хранилищем P2. В результате у нас есть внутренний репозиторий P2, имеющий все версии требуемой функции.

Мы находим, что этот процесс слишком громоздок. Есть ли такой инструмент, как Nexus, который был бы более удобным?

UPD.: Есть обсуждение в списке пользователей Tycho

2 ответа

С плагином Unxip Repository Nexus вы можете использовать Nexus для обмена двоичными артефактами между сборками Tycho.

  • Тихо проект А публикует свои артефакты, как обычный проект Maven: проект построен с mvn clean deploy, который загружает артефакты проекта в ваш развернутый репозиторий Maven на Nexus. Единственное специальное требование заключается в том, что проект создает репозиторий p2. Рекомендуемый способ сделать это eclipse-repository модуль, но "развертываемая функция" также должна работать в большинстве случаев.

  • На вашем Nexus вам понадобится только одна разовая конфигурация: для репозитория развертывания Maven (или для "группы репозитория", включающей этот репозиторий) вам необходимо добавить виртуальный репозиторий типа "Unzip Repository". Этот виртуальный репозиторий показывает артефакты zip из репозитория deploy в распакованном виде.

    Пример: если архив репозитория p2 проекта A находится в репозитории развертывания Maven по адресу http://nexus.corp/nexus/repositories/build.milestones/corp/example/project-a/project-a-repo/1.0.0/project-a-repo-1.0.0.zip, он будет доступен в стандартном формате репозитория p2 в Unzip Repository по адресу 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/,

  • Tycho project B может ссылаться на артефакты из проекта A, добавляя последний URL к своей целевой платформе, например, в файле определения цели.

В приведенном выше примере проект B ссылается на версию выпуска проекта A. Тот же подход также работает для моментальных снимков, поскольку в репозитории Unzip есть поддержка "символических" версий, например 1.1.0-SNAPSHOT за последний развернутый 1.1.0-SNAPSHOT или даже просто SNAPSHOT для общей наивысшей версии. Используя эти символические версии, Project B может, например, в своей собственной сборке CI ссылаться на проект A результатов сборки CI, добавляя результирующие (стабильные!) URL-адреса хранилища p2 на своей целевой платформе.

Отказ от ответственности: плагин Nexus для репозитория Unzip является частью проекта Tycho, участником которого я являюсь.

Возможно, это немного поздно, но я сейчас работаю над менеджером репозитория с открытым исходным кодом (EPL), который поддерживает рабочий процесс развертывания в репозиторий с помощью maven и tycho и использования его в качестве репозитория P2.

Также возможно развернуть пакеты, созданные maven (не maven tycho), и метаданные P2 будут сгенерированы автоматически.

Проект называется "Package Drone" и размещен на github. Также есть краткое вступительное видео.

Другие вопросы по тегам