Инструмент для управления / хостинга собственных репозиториев 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. Также есть краткое вступительное видео.