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

Я понимаю, что OSGi можно использовать для управления служебными зависимостями, то есть для совместного использования экземпляров POJO между пакетами. Но скажи, что у меня есть библиотека B.jar с зависимостями времени компиляции на классах в моей другой библиотеке A.jar:

ProjectA/src/com/example/awesome/A.java:

package com.example.awesome;
public class A {}

ProjectB/src/com/example/awesome/web/B.java:

package com.example.awesome.web;
import com.example.awesome;
public class B extends A {}

Есть ли в OSGi встроенный декларативный способ реализации этой зависимости во время выполнения?

1 ответ

Решение

Да, используя Export-Package а также Import-Package явные заголовки.

Если вы используете автоматизированную систему сборки, она может обнаружить взаимосвязь и добавить эти заголовки для вас. И Maven, и Gradle используют bnd для генерации необходимых заголовков манифеста. Интеграция bnd обеспечивается maven-bundle-plugin и плагином Gradle OSGi соответственно.

Другие вопросы по тегам