Можно ли легко использовать 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 соответственно.