ジャカルタへのアップグレード
Liferay DXP 2025.Q3+
Liferay は、DXP 2025 Q3 および 2026 Q1 Portal リリースから Jakarta EE に移行し、エンタープライズ Java の未来へと踏み出しました。 これにより、Liferay(および当社のユーザー)は、企業向けに設計された最新のアプリケーションサーバーと最新のライブラリを自由に利用できるようになります。 これらおよび今後のリリースはすべて Jakarta ベースであるため、古い javax パッケージを使用するコードがある場合は、新しい Jakarta プラットフォームを使用する Liferay のバージョンで実行できるように、そのコード—、特にその依存関係—を変更する必要があります。
幸いなことに、ほとんどの場合、そのプロセスは簡単で分かりやすく、Liferayはそれを支援するためのツールを提供しています。 Liferay WorkspaceとBladeは、プロジェクトをJakartaにアップグレードするのに役立ちます。
LiferayプロジェクトをJakartaを使用するようにアップグレードするには、次の4つのステップがあります。
-
ワークスペースと依存関係を更新する
-
REST Builderプロジェクトを更新してください(もしあれば)。
-
各プロジェクトでLiferay Jakartaアップグレードツールを実行してください。
-
サードパーティの依存関係をJakartaの対応するものに置き換える
ステップ1:ワークスペースを更新する
ポートレットなどのJavaベースのWebアプリケーションは、 javax 名前空間から jakarta 名前空間に移動されたパッケージに依存しています。 Liferay Workspaceはこれらの更新の多くを自動的に行うことができますが、最新のWorkspaceを使用する必要があります。
settings.gradle を編集することで、Workspace のバージョンを設定できます。
-
ワークスペースのルートで、
settings.gradleをテキストエディタで開きます。 -
バージョンを最低でも
14.0.0に設定してください。dependencies { classpath group: "com.liferay", name: "com.liferay.gradle.plugins.workspace", version: "14.0.0" }
Workspaceを最新バージョンを使用するように設定することもできます。
dependencies {
classpath group: "com.liferay", name: "com.liferay.gradle.plugins.workspace", version: "latest.release"
}
次に、対象プラットフォームをJakartaベースのLiferayバージョンにアップデートします。
-
ワークスペースのルートで、
gradle.propertiesを開きます。 -
対象とするジャカルタベースのリリース、または最低でも
2025.q3.0にバージョンを設定してください。liferay.workspace.target.platform.version=2025.q3.0
ワークスペースは、プロジェクトを更新できるように設定されています。
ステップ2(オプション):REST Builderプロジェクトの移行
ワークスペースにREST Builderプロジェクトがある場合は、Jakarta用に再構成する必要があります。
-
rest-config.yamlファイルで、Jakarta 名前空間を使用するように指定します。javaEEPackage: "jakarta"例えば、
apiDir: "../headless-r3b2-api/src/main/java" apiPackagePath: "com.acme.headless.r3b2" application: baseURI: "/headless-r3b2" className: "HeadlessR3B2Application" name: "Liferay.Headless.R3B2" author: "Jonah the son of Amittai" clientDir: "../headless-r3b2-client/src/main/java" testDir: "../headless-r3b2-test/src/testIntegration/java" javaEEPackage: "jakarta" -
RESTビルダーを実行する:
blade gw buildREST
ステップ3:Jakartaアップグレードツールを実行する
Workspaceには、コードを調べてLiferayが認識している依存関係(つまり、Liferayに同梱されているもの)を javax から jakartaに変換できるJakartaアップグレードツールが含まれています。 これはプロジェクトをジャカルタにアップグレードする上で非常に役立ちますが、以下の点に注意してください。
-
このツールはプロジェクトファイルを直接変更します。
-
ツールを実行した後、コードを確認し、手動で更新が必要な参照漏れがないか確認する必要があります。
Workspaceが最新の状態になったら、Jakartaアップグレードツールを実行してください。
Jakarta アップグレード ツールは、一般的な javax 参照に加えて、ポートレット コードを Jakarta Portlet 4.0 にアップグレードします。 コード参照を手動で更新しようとする場合は、 Jakarta Portlet 4.0 アップグレードの変更内のすべての参照も更新する必要があります。
-
プロジェクトディレクトリのルートにあるCLIにドロップしてください。
-
Jakartaアップグレードツールを実行します。
blade gw upgradeJakarta
このツールは、あなたのGradle、bnd.bnd、Javaファイルで見つけることができるすべてのjavax参照を、適切なjakarta参照に置き換えています。 これは、Liferayが認識している依存関係を処理します。 それらさえあれば、テストの準備は完了です! プロジェクトをコンパイル、デプロイ、テストして、期待どおりに動作することを確認してください。 Jakarta API の中には、 javax の対応するものとは異なるものがあることに注意してください。 そのような場合は、申請内容を調整する必要があります。
ただし、Liferayに同梱されていないサードパーティ製の.jarファイルに依存している場合は、それらの依存関係を修正するためにさらに作業が必要になります。
ジャカルタポートレットのアップグレード変更点
Jakartaアップグレードツールを実行してコード参照をJakartaにアップグレードすると、ポートレットコードもPortlet 3.0からJakarta Portlet 4.0にアップグレードされます。 ツールを実行しない場合は、コード内のこれらの参照を手動で更新する必要があります。
Jakartaアップグレードツールは、以下のポートレット参照を変更します。
| Javaxポートレット3.0 | ジャカルタポートレット 4.0 | ファイルコンテキスト |
|---|---|---|
javax.portlet.* | jakarta.portlet.* | パッケージ名 |
javax.portlet.version=3.0 | jakarta.portlet.version=4.0 | @Component プロパティ |
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> | <web-app version="6.0" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"> | web.xml (サーブレット6.0に切り替え) |
<web-fragment version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"> | <web-fragment version="6.0" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"> | fragment.xml (サーブレット6.0に切り替え) |
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"> | <taglib version="3.0" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-jsptaglibrary_3_0.xsd"> | タグライブラリモジュール |
ステップ4:サードパーティの依存関係を置き換える
プロジェクトをコンパイルしてテストできるようにするための最終ステップは、Jakartaアップグレードツールで置き換えることができなかったサードパーティ製の.jarファイルを、Jakartaの対応するファイルに置き換えることです。 ここでは、Liferayは今後の進め方についてガイダンスを提供するにとどまります。 取るべき手順は2つあります。1つ目は推奨される方法であり、サポートも受けられますが、2つ目はサポート対象外の最終手段です。
-
古い
javaxバージョンの代わりに、ジャカルタ固有のバージョンの .jar を使用してください。 それが不可能な場合は、代替手段を見つけて、それを使用するようにコードを修正してください。 -
依存関係に適切な Jakarta の代替手段がない場合は、 Eclipse Transformer を使用して、
javaxクラスに依存する .jar を、名前が変更された Jakarta パッケージに準拠するように変更します (サポートされていませんが、動作する可能性があります)。
旧式の瓶はジャカルタ製の同等品に交換または代替してください。
必要な.jarファイルには、ジャカルタ固有のバージョンが存在する可能性があります。 もしそうであれば、プロジェクト内でそれを置き換えて、インポートとAPI呼び出しが正しく機能することを確認するだけで済みます。 これは、ビルドスクリプト内の依存関係を変更するだけで済む場合もあります。
例えば、 Log4j には、おそらくあなたが使用していたであろう、以下の依存関係を持つレガシー javax バージョンがあります。
runtimeOnly "org.apache.logging.log4j:log4j-web"
Jakartaバージョンにアップグレードするには、Jakartaバージョンを宣言し、Javaコード内のインポートを修正するだけで済みます。
runtimeOnly "org.apache.logging.log4j:log4j-jakarta-web"
使用している.jarファイルのドキュメントを確認し、Jakartaベースの代替ファイルが利用可能かどうかを確認してください。 該当するものがない場合は、他にもいくつか選択肢があります。 同様の機能を提供し、かつJakartaにも対応している別の.jarファイルに置き換えるのが最善策かもしれません。 このオプションでは、新しい機能を使用するようにアプリケーションを適応させる必要がありますが、同時にアプリケーションの将来性も確保できます。
それが不可能な場合でも、まだもう一つ選択肢があります。 これは公式にはサポートされていませんが、最終手段としては有効かもしれません。
Eclipse Transformerを使用してバイナリJarファイルを変更する
最後の手段は、 Eclipse Transformer を使用してバイナリ .jar ファイルを変更し、Jakarta をサポートすることです。 これは、メンテナンスが終了し、ソースコードも入手できない.jarファイルを使用する場合にのみ行うべきことです。
これは、他のすべての選択肢が除外された場合の最後の手段として用いるべきです。 Liferay は、変換された .jar ファイルに起因する問題をサポートしていません。また、元の .jar ファイルの提供元も同様です。
これらの警告にもかかわらず、Eclipse Transformer を使用したい場合は、Liferay が提供する 2 つのプロパティ ファイルを使用する必要があります。これらのファイルは GitHub からダウンロードできます。
- リンク先404エラーhttps://github.com/liferay/liferay-portal/blob/master/modules/liferay-jakarta-renames.properties
- リンク先404エラーhttps://github.com/liferay/liferay-portal/blob/master/modules/liferay-jakarta-versions.properties
-
上記のリンクからEclipse Transformerをダウンロードしてください。
-
Transformerは.jarファイルとして提供されるため、使用するには解凍する必要があります。 .jarファイルを解凍して、専用のフォルダに保存してください。
-
上記の2つのプロパティファイルを新しいTransformerフォルダにダウンロードしてください。
-
変換したい.jarファイルを同じフォルダにコピーしてください。
-
このフォルダ内のCLIにドロップしてください。
-
このコマンドを実行する際は、[name]の部分を変換対象の.jarファイルの名前に置き換えてください。
java -jar org.eclipse.transformer.cli-1.0.0.jar --renames ./liferay-jakarta-renames.properties --versions ./liferay-jakarta-versions.properties ./[name].jar ./[name]-transformer.jar
.jarファイルが変換されます。 それが実際に機能するかどうかは、ご自身のアプリケーションでテストしてみなければ分かりません。 Liferayは、このように変換された.jarファイルを含むアプリケーションをサポートできないことに注意してください。
Liferayは、ジャカルタへの移行プロセスをできる限りスムーズかつ円滑に進めるために、多くの努力を重ねてきました。 これらのツールは、将来に向けてアプリケーションを円滑に準備する上で大いに役立ちます。