Liferay Workspaceのターゲットプラットフォームの管理

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つのステップが必要です。

  1. ワークスペースの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.fp17.1.10.fp2など)に従います。

  2. ターゲットプラットフォームを設定したら、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.bomrelease.dxp.bom
  • release.portal.bom.compile.onlyrelease.dxp.bom.compile.only
  • 7.1.07.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で利用できるようになります。

これで、ターゲットプラットフォームを定義できるようになりました。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています