据我所知,OSGi可用于管理服务依赖关系,即在bundle之间共享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是否有内置的声明方式在运行时强制执行此依赖项?
答案 0 :(得分:3)
是的,使用Export-Package
和Import-Package
清单标题。
如果您使用自动构建系统,它可能会检测到该关系并为您添加这些标头。 Maven和Gradle都使用bnd来生成必要的清单标头。 bnd集成分别由maven-bundle-plugin和Gradle OSGi plugin提供。