Реализация сервера OBR

Я играю с OSGi. Насколько я понимаю, чтобы установить и запустить пакет, вам нужно уже разрешить его зависимости. Поскольку ручная установка его прямых (и косвенных) зависимостей может быть болезненной, был введен OBR.

Я использую Felix в качестве реализации платформы OSGi и хотел бы автоматически разрешать зависимости моих пакетов через OBR (т.е. библиотеку guava). Именно по этой причине я использую org.apache.felix.bundlerepository на клиенте.

Я не уверен, что делать на стороне сервера. Я не мог найти достоверной информации о том, что делать. Я уверен, что Felix можно легко настроить на сервере, чтобы он служил «сервером OBR», но я не знаю, как это сделать. Не могли бы вы мне помочь? Код будет высоко оценен. Если вы не можете опубликовать код, могли бы, по крайней мере, рассказать мне об общих шагах (или связать ресурс), которые мне нужны для успешной настройки репозитория (например, пакеты, необходимые для платформы felix или другого программного обеспечения, реализующего такую ​​​​функцию).

Моя установка прямо сейчас:

  • Феликс;
  • Затмение Неон;
  • Maven для затмения (1.7);

Спасибо за ответ!


person Koldar    schedule 06.09.2016    source источник
comment
Что вы имеете в виду под серверной частью? Хотите узнать, как развертывать пакеты в экземпляре OSGi или как настроить репозиторий, из которого можно получить пакеты при разрешении зависимостей, например, из репозитория maven?   -  person tobias_    schedule 07.09.2016
comment
Извините, если я был неясен. Я хочу настроить репозиторий, в котором я могу получать пакеты из экземпляра OSGi для разрешения зависимостей.   -  person Koldar    schedule 07.09.2016


Ответы (3)


Существует плагин OBR для Sonartype Nexus 2.13., что позволяет предоставить репозиторий, совместимый с OBR. Его также можно использовать для проксирования существующего репозитория Maven.

Однако перед настройкой собственного репозитория вы также можете ознакомиться с bndtools и их подходом к разрешению зависимостей. Bndtools также позволяет вам полагаться на существующие репозитории Maven, которые явно не поддерживают OBR. Существует руководство по работе с Maven, в котором объясняется их подход.

person tobias_    schedule 07.09.2016
comment
Я уже использую инструменты BND (в частности, maven-bundle-plugin) для обновления моего репозитория OBR в моем локальном репозитории maven с помощью моих разрабатываемых пакетов. Но как насчет сторонних пакетов (например, com.google.guava)? Было бы глупо загружать исходные коды (если они доступны), создавать проект maven и использовать плагин maven-bundle-plugin для обновления файла OBR relay.xml. Возможно (и возможно) я что-то упускаю. Нет ли способа сказать, пожалуйста, добавьте следующий пакет x.jar в мой репозиторий OBR. Еще раз извините, если мой вопрос был неясен - person Koldar; 07.09.2016

«Серверная сторона» репозитория OBR просто состоит из индексного файла, который, в свою очередь, содержит URL-ссылки на пакеты. Вы можете обеспечить это без какого-либо специального серверного программного обеспечения. Например, HTTP-сервера Apache или Nginx будет достаточно.

person Neil Bartlett    schedule 07.09.2016
comment
Я знаю, что OBR состоит только из одного XML-файла, и я знаю, что есть инструменты (такие как BNDTools или maven-bundle-plugin), которые, учитывая разрабатываемый проект, могут создать вам правильный XML-файл. Но предположим, вам нужно добавить другие зависимости (например, библиотеку «guava»): было бы глупо вручную создавать такой xml. Есть ли инструмент, который может помочь вам автоматически добавлять данные? Что-то вроде: я хочу добавить в свой репозиторий OBR «com.google.guava:19.0», сделать «obr-add /home/koldar/com.google.guava.jar». - person Koldar; 07.09.2016
comment
Инструмент для создания индекса называется bindex. Существует множество способов его использования. Проще всего вы можете запускать его как инструмент командной строки всякий раз, когда изменяется содержимое вашего репо. В качестве альтернативы есть способы заставить файл автоматически генерировать индекс при каждом изменении репо, но для этого требуется дополнительная логика на стороне сервера. Возможно, вы могли бы сказать, как бы вы хотели чтобы это работало, и я скажу вам, можно ли это сделать и как это сделать. - person Neil Bartlett; 07.09.2016

Karaf Cave предоставляет репозиторий пакетов OSGI.

person Alexandre Cartapanis    schedule 07.09.2016
comment
может ли он работать на феликсе? Я знаю, что реализации фреймворка могут определять специфические для себя конфигурации (например, felix.auto.deploy.dir) - person Koldar; 07.09.2016
comment
Это набор пакетов, поэтому он, безусловно, может работать на felix, но вам следует подумать об использовании его в контейнере Karaf, его будет проще настраивать, управлять и запускать. - person Alexandre Cartapanis; 07.09.2016