oo

パッケージのエクスポート

OSGiでは、パッケージはデフォルトでプライベートです。 他のモジュールがそれらをインポートして使用できるように、パッケージを明示的にエクスポートする必要があります。

パッケージをエクスポートする方法は次のとおりです。

  1. bnd.bndファイルを開きます。

  2. Export-Package:ヘッダを追加します(まだ追加していない場合)。

  3. 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ファイルにプロパゲートします。

important

同じパッケージを複数のJARにエクスポートしないでください。 異なるモジュールから同じパッケージをエクスポートすると、予測できない副作用を伴う「分割パッケージ」の問題が発生します。

note

Bndは、モジュールのエクスポートされたパッケージを置換可能にします。 つまり、Bndは、モジュールのエクスポートされたパッケージを、名前は同じだがバージョンが異なる可能性のある、別のモジュールからエクスポートされた互換性のあるパッケージに置き換えます。 Bndは、エクスポートするすべてのパッケージをモジュールに自動的にインポートさせることで、これを可能にします。 このように、モジュールはそれ自体で動作できますが、パッケージの異なる(互換性のある)バージョン、あるいは同じバージョンを提供するモジュールと連携して動作することもできます。 別のモジュールのパッケージのほうが、他のモジュールとうまく「配線」できる可能性があります。 Peter Kriensのブログ記事 では、置換可能なエクスポートについて説明しています。

モジュールのパッケージを共有できるようになりました。

関連トピック

Feature: