パッケージのインポート
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。
あなたのモジュールは、多くの場合、パッケージから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モジュールプロジェクト 使用して作成された ブレードCLI、 Liferayの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プラグインWAR | WEB-INF/liferay-plugin-package.properties |
おめでとうございます! これで、使用するモジュールとプラグインのすべての種類のパッケージをインポートできます。