Liferay WorkspaceはLiferay DXPの特定のリリースをターゲットにするのに役立ち、依存関係を適切に解決することができます。これにより、アップグレードが簡単になります。ターゲットプラットフォームを指定し、Workspaceが新しいバージョンを指定するからです。すべての依存関係は、ターゲットのリリースで提供される最新のものにアップデートされます。
Liferay Dev Studio DXP 3.2以降を使うと、特定のバージョンをターゲットにすることがさらに効率的にできます。Dev Studio DXPは、以下の目的に沿って、設定済みのLiferay DXPソースコードにインデックスを付けます。
この機能を有効にするには、ワークスペースのgradle.properties
ファイルで、以下のプロパティを設定します。
target.platform.index.sources=true
Dev Studio DXPのこれらのオプションは、Liferay Workspaceで開発する場合、または特定の設定がされているマルチモジュールのGradleプロジェクトにTarget Platform Gradleプラグインを適用している場合にのみ、使用することができます。Target Platform Gradleプラグインの適用の詳細については、Targeting a Platform Outside of Workspaceのセクションを参照してください。
次は、この仕組みについて説明します。
BOMを使用した依存関係の管理
定義済みの部品表(BOM)をインポートすることで、バージョンをターゲットにできます。これは、ワークスペースのgradle.properties
ファイルのプロパティを指定するだけでできます。この方法については、後ほど紹介します。
各Liferay DXPバージョンには、ワークスペースが参照するように指定できる、定義済みのBOMがあります。各BOMは、特定のリリースで使用されるアーティファクトとそのバージョンを定義します。BOMはすべての依存関係を管理形式でリストするため、プロジェクトに依存関係を追加しません。ビルドツール(例: GradleまたはMaven)に、プロジェクトで定義されたアーティファクトに必要なバージョンのみを提供します。つまり、依存関係のバージョンを指定する必要はありません。BOMは自動的に、BOMに基づいて適切なアーティファクトバージョンを定義します。
プロジェクトのbuild.gradle
で異なるバージョンを指定することにより、BOMの定義済みのアーティファクトバージョンのオーバーライドができます。プロジェクトのビルドファイルで定義されたアーティファクトバージョンは、定義済みのBOMで指定されたものをオーバーライドします。BOMのオーバーライドは危険な場合があることに注意し、新しいバージョンがターゲットプラットフォームと互換性があることを確認してください。
BOMの詳細については 、Mavenの公式ドキュメンテーションのImporting Dependenciesのセクションを参照してください。
次に、設定例について説明します。
Target Platformの設定
開発するバージョンを設定するには、以下の2つのステップが必要です。
-
ワークスペースの
gradle.properties
ファイルを開き、ターゲットにするバージョンにliferay.workspace.target.platform.version
プロパティを設定します。例えば、liferay.workspace.target.platform.version=7.1.1
Liferay DXPを使用している場合は、以下のようにプロパティを設定できます。
liferay.workspace.target.platform.version=7.1.10
DXPのGA1リリースに続くバージョンは、フィックスパックバージョン(例:
7.1.10.fp1
、7.1.10.fp2
など)に従います。 -
ターゲットプラットフォームを設定したら、Gradleビルドファイルの依存関係にバージョンが指定されていないことを確認してください。これで、設定されたターゲットプラットフォームのBOMからバージョンがインポートされます。たとえば、シンプルなMVCポートレットの
build.gradle
は以下のようになります。dependencies { compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel" compileOnly group: "com.liferay.portal", name: "com.liferay.util.taglib" compileOnly group: "javax.portlet", name: "portlet-api" compileOnly group: "javax.servlet", name: "javax.servlet-api" compileOnly group: "jstl", name: "jstl" compileOnly group: "org.osgi", name: "osgi.cmpn" }
ターゲットプラットフォームの機能は、Liferay Workspaceのバージョン1.9.0以降で使用できます。古いバージョンを使用している場合は、プラットフォームターゲティングを活用するためにアップデートする必要があります。これを行うには、Updating Liferay Workspaceのチュートリアルを参照してください。
これで、ワークスペースでターゲットプラットフォームを設定する方法と、Gradleのビルドファイルにバージョンのない依存関係がどのように表示されるかがわかるようになりました。
ワークスペースの外部のプラットフォームをターゲットとする
Liferay Workspaceを使用しないでプラットフォームを対象としたい場合は、カスタムされたマルチモジュールGradleビルドのbuild.gradle
ルートファイルにTarget Platform Gradleプラグインを適用する必要があります。
これを行うには、build.gradle
ファイルは以下のようになります。
buildscript {
dependencies {
classpath group: "com.liferay", name: "com.liferay.gradle.plugins.target.platform", version: "1.1.6"
}
repositories {
maven {
url "https://repository-cdn.liferay.com/nexus/content/groups/public"
}
}
}
apply plugin: "com.liferay.target.platform"
dependencies {
targetPlatformBoms group: "com.liferay.portal", name: "release.portal.bom", version: "7.1.0"
targetPlatformBoms group: "com.liferay.portal", name: "release.portal.bom.compile.only", version: "7.1.0"
}
Liferay DXPユーザーは、アーティファクト名とバージョンを以下のように置き換える必要があります。
release.portal.bom
→release.dxp.bom
release.portal.bom.compile.only
→release.dxp.bom.compile.only
7.1.0
→7.1.10
このGradleコードは、
- LiferayのTarget Platform Gradleプラグインを適用し、
- プロジェクトのビルドに必要なアーティファクトを提供するリポジトリを設定し、
- Target Platformプラグインの依存関係を設定します。
com.liferay.ce.portal.bom
:Liferay DXPに含まれる、すべてのアーティファクトを提供します。com.liferay.ce.portal.compile.only
:Liferay DXPには含まれなくても、ビルド中に参照する必要があるアーティファクトを提供します(例:org.osgi.core
)。
Liferay Dev Studio DXPを使用した高度な検索やLiferay DXPソースのデバッグに関心がある場合は、以下次の設定も適用する必要があります。
targetPlatformIDE {
includeGroups "com.liferay", "com.liferay.portal"
}
これにより、ターゲットプラットフォームのソースコードにインデックスが付けられ、Dev Studio DXPで利用できるようになります。
これで、ターゲットプラットフォームを定義できるようになりました。