パッケージのエクスポート
OSGiでは、パッケージはデフォルトでプライベートです。 他のモジュールが インポート して使用できるように、パッケージを明示的にエクスポートする必要があります。
パッケージをエクスポートする方法は次のとおりです。
-
bnd.bndファイルを開きます。 -
Export-Package:ヘッダを追加します(まだ追加していない場合)。 -
Export-Package:ヘッダの後にパッケージ名をリストします。Export-Package: com.liferay.petra.io,com.liferay.petra.io.unsync
Workspaceベースのプロジェクト ( Blade CLI または Liferay Developer Studio を使用) には Bndがあります。 Bndは、OSGiヘッダをbnd.bndファイルからモジュールJARのMETA-INF/MANIFEST.MFファイルにプロパゲートします。
同じパッケージを複数のJARにエクスポートしないでください。 異なるモジュールから同じパッケージをエクスポートすると、予期しない副作用を伴う “分割パッケージ” の問題が発生してしまいます。
Bnd はモジュールのエクスポートされたパッケージを 置換可能にします。 つまり、Bndは、モジュールのエクスポートされたパッケージを、名前は同じだがバージョンが異なる可能性のある、別のモジュールからエクスポートされた互換性のあるパッケージに置き換えます。 Bndは、エクスポートするすべてのパッケージをモジュールに自動的にインポートさせることで、これを可能にします。 このように、モジュールはそれ自体で動作できますが、パッケージの異なる(互換性のある)バージョン、あるいは同じバージョンを提供するモジュールと連携して動作することもできます。 別のモジュールからのパッケージは、他のモジュールとのより良い “配線” 機会を提供する可能性があります。 Peter Kriens のブログ投稿 は代替輸出について説明しています。
モジュールのパッケージを共有できるようになりました。