2010-12-03 5 views
40

Наша компания использует Maven. Мы используем диспетчер репозитория Nexus для хранения наших снимков и выпусков.Инструмент для управления/размещения собственных репозиториев p2?

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

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

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

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

UPD:. Существует discussion on Tycho Users list

+4

Nexus Pro предлагает некоторые функции репозитория P2. Вы посмотрели, будет ли это соответствовать вашим потребностям? – RonU 2011-11-07 18:49:53

+5

Это уже не функция Nexus Pro; поскольку Nexus 2.x плагин p2 теперь доступен с открытым исходным кодом и для всех доступен для использования http://www.infoq.com/news/2012/02/nexus-20 и https://github.com/sonatype/nexus- p2-repository-plugin – 2012-09-18 00:03:42

+3

Обсуждение связанного с вами списка tycho очень устарело. Nexus с p2-репо должен помочь вам. Если есть проблемы с этим запросом в списке рассылки пользователей или здесь, и мы постараемся помочь. – 2012-09-27 05:25:52

ответ

9

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

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

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

    Пример: Если zp проекта 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 по адресу 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 B может ссылаться на артефакты из проекта A путем добавления последнего URL-адреса к его target platform, например. в файле определения цели.

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

Disclaimer: Плагин Unxip Repository Nexus является частью проекта Tycho, из которого я являюсь коммиттером.

2

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

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

Проект называется «Пакет Drone» и hosted on github. Существует также short introduction video.

Смежные вопросы