2

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 には、実行時にこの依存関係を強制する宣言的な方法が組み込まれていますか?

4

1 に答える 1

3

はい、Export-PackageおよびImport-Packageマニフェスト ヘッダーを使用します。

自動ビルド システムを使用している場合は、関係が検出され、これらのヘッダーが追加されることがあります。Maven と Gradle はどちらもbndを使用して、必要なマニフェスト ヘッダーを生成します。bnd 統合は、それぞれ maven-bundle-plugin と Gradle OSGi pluginによって提供されます。

于 2013-06-18T14:31:34.867 に答える