パッケージのインポート

パッケージのインポート

ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。

あなたのモジュールは、多くの場合、パッケージからJavaクラスを使用する必要があります エクスポート 他のモジュールで。 モジュールがインポート用にセットアップされると、OSGiフレームワークは、必要なパッケージをエクスポートする他の登録済みモジュールを見つけ、それらをインポートモジュールに接続します。 実行時に、インポートモジュールは、クラスのパッケージをエクスポートする有線モジュールからクラスを取得します。

これを実現するには、モジュールは、必要なJavaパッケージのコンマ区切りリストで Import-Package OSGiマニフェストヘッダーを指定する必要があります。 たとえば、モジュールに javax.portlet および com.liferay.portal.kernel.util パッケージのクラスが必要な場合、次のように指定する必要があります。

Import-Package: javax.portlet,com.liferay.portal.kernel.util

インポートパッケージは、手動で指定する必要がありますが、常に指定する必要はありません。 便利なことに、Liferay DXPプロジェクトのテンプレートとツールは、モジュールが使用するパッケージを自動的に検出し、モジュールJARのマニフェストのパッケージインポートに追加します。 さまざまなパッケージインポートシナリオを次に示します。

これらのシナリオでパッケージのインポートがどのように指定されるかを見てみましょう。

パッケージの自動インポート生成

のGradleとMavenモジュールプロジェクト 使用して作成された ブレードCLILiferayのMavenの原型、又は のLiferay @ IDE @ 用途 BND。 そのようなプロジェクトのモジュールJARをビルドすると、bndはモジュールが使用するパッケージを検出し、 Import-Package ヘッダーがパッケージを指定する META-INF / MANIFEST.MF ファイルを生成します。

たとえば、MavenまたはGradleを使用してLiferayモジュールを開発しているとします。 ほとんどの場合、 pom.xml または build.gradle ファイルでモジュールの依存関係を指定します。 ビルド時に、MavenまたはGradleバンドルプラグインは pom.xml または build.gradle ファイルを読み取り、必要な Import-Package ヘッダーをモジュールJARの META-INF / MANIFEST.MF追加します。

次に、モジュールの build.gradle ファイルの依存関係セクションの例を示します。

dependencies {
    compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.0.0"
    compileOnly group: "javax.portlet", name: "portlet-api", version: "2.0"
    compileOnly group: "org.osgi", name: "org.osgi.service.component.annotations", version: "1.3.0"
}

モジュールJARの META-INF / MANIFEST.MF ファイルで生成される Import-Package ヘッダーは次のとおりです。

Import-Package: com.liferay.portal.kernel.portlet.bridges.mvc;version=
"[1.0,2)",com.liferay.portal.kernel.util;version="[7.0,8)",javax.nami
ng,javax.portlet;version="[2.0,3)",javax.servlet,javax.servlet.http,j
avax.sql

ビルドファイルはJARファイルの依存関係のみを指定する必要があることに注意してください。 bndはモジュールのクラスパスを調べて、アプリケーションが使用するクラスをそれらのJARファイルのどのパッケージに含めるかを決定し、パッケージをインポートします。 でも、これらの組み込みから-検査では、クラスパスで見つかったすべてのクラスが含ま サードパーティのライブラリJAR

従来のLiferayプラグインWARで使用されるクラスに関して、 LiferayのWAB Generator は、WARのJSP、記述子ファイル、およびクラス( WEB-INF / classes および組み込みJAR)での使用を検出します。 WABジェネレータ検索 web.xmlののLiferay-web.xmlののportlet.xmlのLiferay-のportlet.xml、および のLiferay-hook.xml 記述子ファイル。 プラグインの WEB-INF / classes フォルダーにも埋め込みJARにも見つからないクラスのパッケージインポートを追加します。

パッケージのインポートを手動で追加する

WAB Generatorおよびbndは、これらの場所で参照されるクラスのパッケージインポートを追加しません。

  • 認識されない記述子ファイル
  • カスタムまたは認識されない記述子要素または属性
  • 反射コード
  • クラスローダーコード

このような場合、必要なパッケージを手動で決定し、プロジェクトタイプに適した場所の Import-Package OSGiヘッダーに追加する必要があります。

プロジェクトの種類Import-Package ヘッダーの場所
モジュール(bndを使用)[project]/bnd.bnd
モジュール(bndを使用しません)[module JAR]/META-INF/MANIFEST.MF
従来のLiferayプラグインWARWEB-INF/liferay-plugin-package.properties

おめでとうございます! これで、使用するモジュールとプラグインのすべての種類のパッケージをインポートできます。

関連トピック

依存関係の構成

プラグインの依存関係の解決

WABジェネレーターの使用

ツーリング

« バンドルクラスローディングフローパッケージのエクスポート »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています