モジュール開発の開始

Liferay DXPのモジュールを開発するには、以下を行う必要があります。

  • フォルダ構造の作成: 適切なフォルダ構造により、特にコラボレーションにおいてのコードの発展と維持が容易になります。一般的なツールでは、開発者が使い慣れている定義済みのフォルダ構造を使用しています。

  • コードと設定ファイルの作成: マニフェスト、Javaクラス、およびリソースを作成します。モジュールをスタブ化することで、ロジックの実装に集中できます。

  • コンパイル: 依存関係の設定とモジュールのビルドを行います。依存関係を管理する一般的なビルドツールには、Gradle、Maven、およびAnt/Ivyが含まれます。

  • デプロイメント: ランタイム環境と対話して、モジュールのインストール、モニター、および修正を行います。

モジュール開発に優れたビルドツールがいくつかあります。このチュートリアルでは、Liferay Workspaceを使用して新しいモジュールを開始する方法を説明します。 モジュール開発を簡素化し、その大部分を自動化するのは、Gradleとbndに基づいたLiferay独自のビルド環境です。

モジュール開発を開始する手順は、以下のとおりです。

  1. Liferay Workspaceをセットアップする

  2. モジュールを作成する

  3. モジュールをビルドしてデプロイする

このチュートリアルを完了すると、モジュールが作成され、ローカルのLiferay DXPバンドルにデプロイできています。

Liferay Workspaceのセットアップ

Liferay Workspace(以下、Workspace)の作成と設定は、Blade CLI(以下、Blade)と呼ばれるツールを使用して簡単に行うことができます。 Bladeはコマンドラインツールであり、Workspaceとプロジェクトを作成し、一般的なタスクを実行します。

まだ持っていない場合は、Bladeをインストールします。

これで、blade実行可能ファイルがシステムパスに追加されました。

以下のコマンドを実行して、現在のディレクトリにWorkspaceを作成できます。

blade init [workspaceName]

これで、Workspaceが作成されました。このフォルダ構造は、以下の図のようになっています。

図1:Liferay Workspaceはプロジェクトを集約することで、Gradleビルド環境を活用します。

Workspaceでは、Liferay DXPのインストールバンドルをローカルファイルシステムのあらゆる場所で使用できるように設定することができます。gradle.propertiesにあるliferay.workspace.home.dirプロパティは、デフォルトのバンドルの場所を[workspace]/bundlesフォルダ(ここでは、まだ作成されていません)に設定します。便宜上、 そこにバンドルをインストールすることをお勧めします。別の場所にインストールする場合は、liferay.workspace.home.dirプロパティのコメントを外して、 希望する場所に設定します。

これで、Workspaceでモジュールを作成する準備ができました。

モジュールを作成する

Bladeでは、プロジェクトテンプレートサンプルプロジェクトを提供しています。テンプレートは、さまざまなタイプのモジュールのファイルをスタブアウトします。サンプルはWorkspaceで作成でき、多くのモジュールタイプの動作確認を行います。テンプレートとサンプルを使用すると、モジュールをすばやく作成できます。

モジュールテンプレートの使用

Bladeコマンドのblade create -lは、プロジェクトテンプレートを一覧表示します。

図2:Bladeのcreateコマンドは、テンプレートに基づいてプロジェクトを作成します。create -lを実行すると、テンプレート名が一覧表示されます。

モジュールを作成するためのコマンド構文は、以下のとおりです。

blade create [options] moduleName

モジュールテンプレートとそのオプションについては、こちらで説明しています。

以下は、Liferay MVCポートレットモジュールの作成例です。

blade create -t mvc-portlet -p com.liferay.docs.mymodule -c MyMvcPortlet my-module

モジュールプロジェクトは、デフォルトではmodulesフォルダに作成されます。

モジュールプロジェクトの構造は、以下のとおりです。

  • src/main/java/ → Javaパッケージルート

  • src/main/resources/content/(オプション)→ 言語プロパティのルート

  • src/main/resources/META-INF/resources/(オプション)→ JSPなどのUIテンプレートのルート

  • bnd.bnd → 必須のOSGiモジュールマニフェストのヘッダーを指定します。

  • build.gradle → Gradleを使用して、依存関係などの設定を行います。

以下の図は、MVCポートレットのプロジェクトを示しています。

図3:Liferayモジュールは、標準のMavenフォルダ構造を使用しています。

サンプルモジュールは、もう1つの有用な開発リソースです。

サンプルモジュールの使用

テンプレートからモジュールを作成する代わりに、サンプルモジュールを作成することもできます。用途に合わせて、モジュールを調べたり、変更したりして、使用できます。

以下のコマンドでは、サンプル名をリストします。

blade samples

以下の図は、リストを示しています。

図4: blade samplesコマンドを使って、ニーズに合わせて作成、調査、および変更できるサンプルモジュールの一覧が表示できます。

Bladeサンプルのコマンド構文は、以下のとおりです。

blade samples [sampleName]

これにより、サブフォルダにサンプルプロジェクトが作成されます。

モジュールをビルドして、Liferayにデプロイするのは簡単です。

モジュールのビルドとデプロイ

Liferay Workspaceでは、モジュールをビルドおよびデプロイするためのGradleタスクを提供しています。 Bladeのblade gwコマンドを使用すると、任意のプロジェクトフォルダからGradleラッパーを呼び出すことができます。ラッパーパスを指定せずに、gradlewを呼び出す場合と同様に、blade gwを使用することができます。

モジュールフォルダで以下のコマンドを実行し、使用可能なGradleタスクを一覧表示します。

blade gw tasks

Workspaceは、bndを使用してモジュールのOSGi MANIFEST.MFファイルを作成し、モジュールJARにパッケージ化します。モジュールをコンパイルしてモジュールJARを作成するには、以下のjar Gradleタスクを実行します。

blade gw jar

作成されたJARはモジュールプロジェクトのbuild/libsフォルダにあり、デプロイの準備ができています。

まだ開始していない場合は、Liferay DXPサーバーを開始します。

| ヒント:新しいターミナルウィンドウとWorkspaceのLiferay DXPサーバー|(TomcatまたはJBoss/Wildflyにバンドルされている)を開くには、次のコマンドを実行します。|

Bladeは、モジュールをローカルのLiferayサーバーにデプロイします。Felix Gogoシェルを使用してOSGiフレームワークと通信し、Felix File Installコマンドを使用して、OSGiコンテナにモジュールを直接デプロイします。上記のコマンドは、デフォルトの11311番ポートを使用します。

モジュールをデプロイするには、以下のコマンドを実行します。

blade deploy

使用しているフォルダツリーにモジュールをデプロイします。たとえば、[workspace]/modulesフォルダでblade deployを実行すると、そのフォルダとサブフォルダ内のすべてのモジュールがデプロイされます。

Liferay Dev Studio DXPを使用すると、モジュールをPackage ExplorerからLiferayサーバーにドラッグしてデプロイできます。Dev Studio DXPは、Liferay Workspace Gradleタスクへのアクセスも提供します。

図5:Liferay Dev Studio DXPでは、ドラッグ&ドロップでモジュールをデプロイできます。

ポートレットモジュールをデプロイすると、ポートレットコンポーネントのcom.liferay.portlet.display-categoryおよびjavax.portlet.display-nameプロパティを介して指定したアプリケーションカテゴリと名前の下にあるLiferay UIで使用できます。

図6:プロジェクトテンプレートに基づく、必要最低限のポートレットです。

モジュールの変更を自動的に再デプロイする

Bladeを使用すると、モジュールプロジェクトの出力ファイルの変更に対するwatchを設定できます。ファイルが変更された場合に、Bladeはモジュールを自動的に再デプロイします。デプロイ時にモジュールに対してwatchを設定するには、モジュールプロジェクトで以下のコマンドを実行します。

blade deploy -w

com.liferay.docs.mymoduleという名前のモジュールのデプロイ(および監視)からの出力は、以下のとおりです。

E:\workspaces\my-liferay-workspace\modules\my-module-project>blade deploy -w

:modules:my-module-project:compileJava UP-TO-DATE
:modules:my-module-project:buildCSS UP-TO-DATE
:modules:my-module-project:processResources UP-TO-DATE
:modules:my-module-project:transpileJS SKIPPED
:modules:my-module-project:configJSModules SKIPPED
:modules:my-module-project:classes UP-TO-DATE
:modules:my-module-project:jar UP-TO-DATE
:modules:my-module-project:assemble UP-TO-DATE
:modules:my-module-project:build

BUILD SUCCESSFUL

Total time: 2.962 secs
install file:/E:/workspaces/my-liferay-workspace/modules/my-module-project/build/libs/com.liferay.docs.mymodule-1.0.0.jar
Bundle ID: 505
start 505

Scanning E:\workspaces\my-liferay-workspace\modules\my-module-project

...

Waiting for changes to input files of tasks... (ctrl-d then enter to exit)

コマンド出力はモジュールがインストールおよび起動されたことを示しており、モジュールのOSGiバンドルIDを報告し、モジュールに変更をデプロイする準備ができています。

これで、モジュールの開発が開始されます。

関連記事

Configuring Dependencies

Liferay Workspace

Tooling

OSGi Basics for Liferay Development

Portlets

« 開発プラットフォームとしてのLiferay依存関係の設定方法 »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています