Organizing the Source
liferay-portal リポジトリは大きいですが、そのレイアウトはいくつかの規則的なパターンに従っています。 一度パターンを覚えれば、ほぼすべての機能のコードを見つけることができる。
トップレベルレイアウト
このリポジトリには主に2つのコード領域があります。
-
ポータル コア — レガシー プラットフォーム コードはまだモジュールに抽出されていません。 最上位ディレクトリは、
portal-impl(コア実装)、portal-kernel(公開 API と共有ユーティリティ)、およびportal-web(サーバーレンダリングされた UI アセット) です。 -
モジュール — liferay-portal/modules/
配下の機能モジュール。 ほとんどのモジュールは Liferay MVC パターンに従い、-api、-service、および-webモジュールのペアとして提供されます。-api— 機能が他のモジュールに公開するパブリック Java インターフェース。-サービス— サービスビルダーによって生成されたビジネスロジックと永続性。-ウェブ- UIコード(ポートレット、JSP、設定、アセットレンダリング)。 ほとんどのバグ修正とUI変更はここで行われます。
実例:ブログモジュール
blogs モジュール グループ ( liferay-portal/modules/apps/blogs/ の下) は、標準的なレイアウトを示しています。 これには blogs-api、 blogs-service、 blogs-web、およびいくつかのサポートモジュール (blogs-recent-bloggers-web、 blogs-item-selector-webなど) が含まれます。
blogs-web モジュールには、ブログウィジェットコードの大部分が含まれており、一般的な UI モジュールが使用するフレームワーク統合を示しています。 以下の各項目は、キーファイルとそれが実装するフレームワークの概念を対応付けています。
| コンポーネント | blogs-web/src/main/... のパス | 目的 |
|---|---|---|
| ポートレットのエントリポイント | java/com/liferay/blogs/web/internal/portlet/BlogsPortlet.java | OSGi @Component プロパティを介してポートレットを宣言します。 クラスは ビューテンプレート 初期化パラメータを宣言していません。 MVCRenderCommand がディスパッチを処理します。 |
| レンダリングコマンドを表示 | java/com/liferay/blogs/web/internal/portlet/action/ViewMVCRenderCommand.java | / および /blogs/view をエントリ JSP にディスパッチします。 |
| メインビューJSP | resources/META-INF/resources/blogs/view.jsp | ブログウィジェットの主要なUIエントリポイント。 |
| アセットレンダラー | java/com/liferay/blogs/web/internal/asset/model/BlogsEntryAssetRenderer.java | ブログ記事をアセットとしてレンダリングし、アセットパブリッシャーや同様のコンテキストで表示できるようにします。 |
| パネルエントリー | java/com/liferay/blogs/web/internal/application/list/BlogsPanelApp.java | 商品メニューにブログの管理項目を追加します。 |
| ポートレットインスタンスの設定 | java/com/liferay/blogs/web/internal/configuration/BlogsPortletInstanceConfiguration.java | システム設定で設定可能なパラメータを公開します。 |
| スケジューラージョブ | java/com/liferay/blogs/web/internal/scheduler/CheckEntrySchedulerJobConfiguration.java | スケジューラジョブパターンを使用して、ブログ記事の定期的なチェックを設定します。 |
| フレンドリーなURLマッパー | java/com/liferay/blogs/web/internal/portlet/route/BlogsFriendlyURLMapper.java | マップはレンダリングを行い、SEOに最適化されたパスにURLを変換します。 |
| 動的インクルード | java/com/liferay/blogs/web/internal/servlet/taglib/BlogsPortletHeaderJSPDynamicInclude.java | フラグメントバンドルを使用せずに、ポートレットヘッダーにマークアップを挿入します。 |
| テンプレートハンドラを表示する | java/com/liferay/blogs/web/internal/portlet/display/template/BlogsPortletDisplayTemplateHandler.java | デフォルトのJSPの代わりにFreeMarkerを使用するアプリケーション表示テンプレート(ADT)を有効にします。 |
| サンプル表示テンプレート | resources/com/liferay/blogs/web/portlet/display/template/dependencies/portlet_display_template_basic.ftl | FreeMarkerでブログ記事を一覧表示する、すぐに使えるADT(抽象データ型)。 |
これらは、 blogs-web モジュールが使用するフレームワークのサブセットです。 liferay-portal/modules/apps/の下のほとんどのモジュールで同じパターンが繰り返されるため、1 つのモジュールのレイアウトを調べると、コードベースの残りの部分のマップが得られます。
関連項目
-
Webアプリケーションの開発 — Liferay DXPのWebアプリケーションフレームワークの概要。
-
MVCポートレットを使用したビューのレンダリング — MVCポートレットパターンがJSPにディスパッチする方法。