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