mcpField
J
javax-to-jakarta-migration

javax-to-jakarta-migration

github.com/github開発40.5k100 回インストール今日更新
リポジトリ

javax-to-jakarta-migration について

Javaプロジェクトで対象となる`javax.*`パッケージを`jakarta.*`へ移行するスキルです。基準ビルドの確認、依存関係とソースの更新、ビルド検証を段階的に進め、変更不要なJDKパッケージも区別します。

主な機能

  1. 01変更前のビルド基準を確認
  2. 02移行対象パッケージの特定
  3. 03対象ランタイムに合わせた依存更新
  4. 04ソースと設定内の参照を変更
  5. 05移行後のビルドとテスト

活用シーン

  1. 01プロジェクトをTomcat 10または11へ移行
  2. 02別スキルから委任されたJakarta名前空間移行
  3. 03Java依存関係とインポートの更新
  4. 04コンパイルとテストによる移行検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/github/awesome-copilot --skill javax-to-jakarta-migration

インストール後、Claude Code で/javax-to-jakarta-migrationを入力して読み込まれたか確認します。

詳細

javax → jakarta 移行スキル

使用するタイミング

  • ユーザーから jakarta 名前空間、Tomcat 10+/11、または Jakarta EE への移行を明示的に依頼された場合
  • java-upgrade または spring-boot-4-migration が名前空間の移行を委任した場合

javax.* のインポートを検出しただけでは、この移行を実施する許可にはなりません。検出結果として報告してください。

Spring Boot プロジェクトでは、Boot BOM が Jakarta のバージョンを管理します。以下のバージョンを固定せず、Jakarta EE のレベルは Boot のバージョンに従わせてください(Boot 4 = Jakarta EE 11、Servlet 6.1)。以下の例は、Spring Boot を使用しないプロジェクトでの Jakarta EE 10(Servlet 6.0、Tomcat 10.1+)を対象としています。

手順

ステップ 0 — ベースライン

最初に ./mvnw verify または ./gradlew build を実行して結果を記録してください。ベースラインが失敗している状態では移行しないでください。変更は専用のコミットまたはステップで行ってください。

ステップ 1 — javax の使用箇所を検索

コードベース全体で、移行が必要な javax.* のインポートを検索してください。

javax.servlet.*      → jakarta.servlet.*
javax.persistence.*  → jakarta.persistence.*
javax.validation.*   → jakarta.validation.*
javax.annotation.*   → jakarta.annotation.*
javax.inject.*       → jakarta.inject.*
javax.enterprise.*   → jakarta.enterprise.*
javax.faces.*        → jakarta.faces.*
javax.ws.rs.*        → jakarta.ws.rs.*
javax.el.*           → jakarta.el.*
javax.json.*         → jakarta.json.*
javax.mail.*         → jakarta.mail.*
javax.websocket.*    → jakarta.websocket.*

移行しないでください(引き続き javax.* のままです):

  • javax.sql.* — JDK の一部です
  • javax.naming.* — JDK(JNDI)の一部です
  • javax.crypto.* — JDK の一部です
  • javax.net.* — JDK の一部です
  • javax.security.auth.* — JDK の一部です
  • javax.swing.*、javax.xml.parsers.* — JDK パッケージです
ステップ 2 — pom.xml を更新

依存関係の座標を置き換えてください。対象ランタイムに合った API バージョンを選択してください。以下の表は Jakarta EE 10(Tomcat 10.1+、Servlet 6.0)向けです。

対象ランタイムJakarta EEServletPersistenceValidationAnnotations
Tomcat 10.095.03.03.02.0
Tomcat 10.1106.03.13.02.1
Tomcat 11116.13.23.13.0
旧新
javax.servlet:javax.servlet-apijakarta.servlet:jakarta.servlet-api:6.0.0
javax.persistence:javax.persistence-apijakarta.persistence:jakarta.persistence-api:3.1.0
javax.validation:validation-apijakarta.validation:jakarta.validation-api:3.0.2
javax.annotation:javax.annotation-apijakarta.annotation:jakarta.annotation-api:2.1.1
ステップ 3 — web.xml を更新(存在する場合)

version は対象の Servlet レベルと一致させてください(Tomcat 10.0 では 5.0、Tomcat 10.1 では 6.0、Tomcat 11 では 6.1)。以下の例は Servlet 6.0 向けです。


<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="4.0">


<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" version="6.0">
ステップ 4 — Java ソースファイルを更新

ステップ 1 で特定した Jakarta EE の javax. インポートのみを、.java ファイル内で対応する jakarta. のインポートに置き換えてください。JDK パッケージ(例:javax.sql、javax.crypto)は変更しないでください。また、Java 以外の参照も確認してください。対象には persistence.xml(javax.persistence.* のプロパティ)、META-INF/services、beans.xml、properties/YAML、文字列でのクラス名、リフレクションが含まれます。

ステップ 5 — 検証
  1. mvn clean compile または gradlew build を実行し、コンパイルエラーを修正してください
  2. mvn test または gradlew test を実行し、すべてのテストが成功することを確認してください
  3. JDK パッケージを除き、残っている javax.* のインポートを検索してください
上流の情報源(移行前に確認)

対象バージョンのページを取得してください。内容がこのスキルと異なる場合は、上流の情報源を優先してください。

出力

変更したすべてのファイル、置き換えたインポート、必要な手動作業を記載した移行概要を提示してください。

コメント