Какова правильная процедура управления зависимостями пакетов OSGi?

Я собираюсь начать работу над приложением, которое я хотел бы запустить в контейнере OSGi, например Virgo . Основная платформа Virgo предоставляет многие из интересующих меня зависимостей, например Spring Framework, но я также хотел бы использовать Spring Integration. Банки Spring Integration представляют собой готовые пакеты OSGi, которые доступны мне вместе со многими другими сторонними зависимостями в репозитории Ivy.

Чтобы сообщить контейнеру OSGi, что мой пакет зависит, скажем, от Spring Integration, мне нужно добавить соответствующие пакеты или пакеты в мой манифест - я знаю, как это сделать, и понимаю, как это работает.

Я хотел бы понять, как разрабатывать, разрешать, создавать и в конечном итоге развертывать сторонние пакеты, доступные в каком-то репозитории (предпочтительно Ivy). Раньше я добивался этого двумя способами:

  1. Добавьте зависимости в целевую платформу или, в данном случае, в репозиторий Virgo ext.
  2. Сохраните копию зависимости в моей рабочей области, экспортируйте ее как часть сборки

Ни одно из этих решений не кажется масштабируемым или особенно элегантным.

Я заинтересован в использовании Virgo 3.0.0 или Equinox, а моя среда разработки - Eclipse. Если другой контейнер OSGi или среда разработки упростят мне жизнь, я с радостью переключусь.

Чтобы прояснить это, я хотел бы знать:

  1. Как мне разработать пакеты OSGi во внешнем репозитории (например, пакеты живут в Ivy)?
  2. Как мне собрать и развернуть мой пакет вместе с его необходимыми внешними зависимостями?

person Mark Elliot    schedule 27.09.2011    source источник


Ответы (2)


Вы можете определить внешний репозиторий Virgo так, чтобы он указывал на локальную копию репозитория Ivy, как описано в Руководстве пользователя Virgo в разделе «Настройка локального репозитория инициализации». Этот репозиторий также можно использовать при запуске Virgo из Eclipse.

Обратите внимание, что мы работаем над интеграцией p2 для Virgo 3.5, и это даст вам некоторые дополнительные возможности.

person Glyn Normington    schedule 28.09.2011
comment
Я думаю, что это удовлетворяет мои потребности в разработке, поскольку я могу настроить свою локальную установку Virgo так, чтобы она указывала на мое репозиторий Ivy, и когда я запускаю локально, Deps Spring Int будут извлекаться автоматически; однако как мне создать распространяемый пакет? - в моем случае мне нужно предположить, что целевая установка не имеет идентичную конфигурацию репозитория подготовки. - person Mark Elliot; 28.09.2011

AFAIK, это зависит от реализации. Если вы используете Equinox, то вам нужна система инициализации p2. Я предполагаю, что другие реализации будут иметь свои собственные методы / инструменты для выполнения аналогичных функций.

person Robin    schedule 27.09.2011
comment
Хорошо, предположим, что теперь у меня есть все эти зависимости, которые я хочу в репозитории p2 ... как мне создать и развернуть функции, содержащие зависимости? - person Mark Elliot; 28.09.2011