2016-09-06 3 views
1

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

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

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

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

  • Феликс;
  • Eclipse Neon;
  • Maven for eclipse (1.7);

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

+0

Что вы подразумеваете под словом «на стороне сервера»? Вы хотите знать, как развернуть пакеты в экземпляр OSGi или как настроить репозиторий, где пакеты могут быть извлечены при разрешении зависимостей, например, из репозитория maven? –

+0

Извините, если я не понял. Я хочу настроить репозиторий, где я могу получить пакеты из экземпляра OSGi для разрешения зависимостей. – Koldar

ответ

1

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

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

+0

Я уже использую инструменты BND (в частности, maven-bundle-plugin) для обновления своего OBR-репо в моем локальном хранилище maven с моими пакетами разработки. Но как насчет сторонних пакетов (например, com.google.guava)? Мне было бы глупо загружать исходные коды (если они есть), создавать проект maven и использовать maven-bundle-plugin для обновления файла OBR repository.xml. Может быть (и, вероятно) я чего-то не хватает. Невозможно сказать «добавьте следующий пакет x.jar в мой репозиторий OBR». Опять же, извините, если мой вопрос был неясен – Koldar

0

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

+0

может ли он работать на felix? Я знаю, что реализация framework может определять конфигурации, специфичные для себя (например, felix.auto.deploy.dir) – Koldar

+0

Это набор пакетов, поэтому он может работать на felix, но вы должны рассмотреть возможность использования его в контейнере Karaf, было бы проще настраивать, управлять и запускать. –

1

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

+0

Я знаю, что OBR состоит только из одного XML-файла, и я знаю, что есть инструменты (такие как BNDTools или maven-bundle-plugin), которые при разработке проекта могут сгенерировать вам правильный XML-файл. Но предположим, что вам нужно добавить другие зависимости (например, библиотеку «guava»): было бы глупо вручную создавать такой xml. Есть ли инструмент, который может помочь вам автоматически добавлять данные? Что-то вроде: «Я хочу добавить к моему OBR repo» com.google.guava: 19.0' do'obr-add /home/koldar/com.google.guava.jar. – Koldar

+0

Инструмент для создания индекса называется bindex Существует множество способов его использования: проще всего вы можете запускать его как инструмент командной строки всякий раз, когда изменяется ваш контент репо. В качестве альтернативы есть способы заставить файл автоматически генерировать индекс всякий раз, когда репо изменяется, но для этого требуется некоторое дополнительное серверная логика. Возможно, вы могли бы сказать, как бы вы хотели, чтобы это работало, и я расскажу вам, как и как это можно сделать. –