Documentation

サードパーティライブラリパッケージの依存関係の解決

アプリケーションは、複数のOSGiモジュールに依存できます。 Javaパッケージの依存関係を解決するのは難しい場合があります。 すべてのパッケージがOSGi JARで配布されるのが理想的ですが、多くのパッケージは従来のライブラリ(非OSGi JAR)にのみ存在しています。 サードパーティの非OSGi JARへの依存関係は、いくつかの方法で解決できます。

  1. Eclipse OrbitServiceMixバンドル などのプロジェクトは、何百もの従来のJavaライブラリをOSGiモジュールに変換します。 パッケージを含むOSGi JARが見つかる場合があります。

    パッケージを含むモジュールを見つけたら、それをデプロイし、それにcompileOnly依存関係を追加します。 パッケージのモジュールがない場合は、次の手順に進みます。

  2. 使用しているライブラリパッケージをLiferayがすでにエクスポートしているかどうかを確認します。 Liferayがそれらをエクスポートしている場合は、エクスポートされたサードパーティパッケージの指示に従って依存関係を調整してください。

  3. 非OSGi JARをcompileInclude依存関係として追加します。

    dependencies {
        compileInclude group: 'org.apache.shiro', name: 'shiro-core', version: '1.1.0'
    }
    

    LiferayのcompileInclude構成は推移的です---ライブラリとそのすべての依存関係をモジュールJARのlibフォルダに埋め込み、JARをモジュールのBundle-ClassPathマニフェストヘッダに追加します。

    注釈

    compileInclude構成は推移的な オプションの依存関係 をダウンロードしません。 オプションの依存関係からのパッケージが必要な場合は、別のサードパーティライブラリパッケージと同じようにパッケージを解決してください。

  4. モジュールをコンパイルします。

  5. モジュールをデプロイし、未解決のパッケージの依存関係を確認します。

  6. モジュールが使用していないパッケージに未解決の依存関係がある場合は、そのパッケージのインポートをブロックします。

    Import-Package:\
        !foo.bar.baz,\
        *
    

    !文字は、パッケージのインポートを無効にします。 *文字は、モジュールが明示的に参照するすべてのパッケージを表します。 *をリストの最後に置くと、Bndはモジュールが参照するすべてのパッケージをインポートします。

注釈

WARファイルにLiferayがすでにエクスポートしているサードパーティパッケージとは異なるバージョンが必要な場合は、Import-Package: リストでそのパッケージを指定してください。 そのパッケージがOSGiモジュールにある場合は、それをデプロイします。

Liferay DXPはWARをデプロイするときに、それを WAB に変換し、デプロイ時にWABからすでにエクスポートされたサードパーティのJARを取り除きます。 Liferayがエクスポートしているものとは異なるバージョンを強制的にデプロイするには、そのパッケージの非OSGi JARの名前をWABジェネレータが除外するJARとは異なる名前に変更し、プロジェクトに そのJARを埋め込む 必要があります。

非OSGi JARからのパッケージへの依存関係を解決しました。