用途
javax-to-jakarta-migration 技能用于将 Java 项目中的 javax.* 命名空间迁移到 jakarta.* 命名空间。适用场景包括:升级到 Tomcat 11 或 Jakarta EE 10+;代码审查中发现 javax.* 导入;将现有项目迁移到 jakarta 命名空间。
主要能力
该技能提供了一套分步迁移流程:
- 扫描代码库中的 javax 使用情况,识别需要迁移的 javax.* 导入。
- 更新 pom.xml 中的依赖坐标。
- 更新 web.xml(如果存在)的命名空间。
- 更新 Java 源文件,将 javax. 导入替换为对应的 jakarta. 等价导入。
- 验证:运行 mvn clean compile 或 gradlew build 修复编译错误;运行 mvn test 或 gradlew test 确保测试通过;搜索是否残留 javax.* 导入(排除 JDK 包)。
使用方式
第 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
替换依赖坐标:
| 旧 | 新 |
|---|---|
| javax.servlet:javax.servlet-api | jakarta.servlet:jakarta.servlet-api:6.0.0 |
| javax.persistence:javax.persistence-api | jakarta.persistence:jakarta.persistence-api:3.1.0 |
| javax.validation:validation-api | jakarta.validation:jakarta.validation-api:3.0.2 |
| javax.annotation:javax.annotation-api | jakarta.annotation:jakarta.annotation-api:2.1.1 |
第 3 步 — 更新 web.xml(如果存在)
<!-- 旧命名空间 -->
<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 源文件
在 .java 文件中将所有 javax. 导入替换为对应的 jakarta. 等价导入。
第 5 步 — 验证
- 运行 mvn clean compile 或 gradlew build — 修复编译错误
- 运行 mvn test 或 gradlew test — 确保所有测试通过
- 搜索是否残留 javax.* 导入(排除 JDK 包)
输出
提供迁移摘要,列出所有变更文件、替换的导入以及任何需要手动处理的步骤。
适用场景
- 升级至 Tomcat 11 / Jakarta EE 10+
- 代码审查检测到 javax.* 导入
- 将现有项目迁移到 jakarta 命名空间
限制
原资料未提供关于价格、收费、平台支持范围、性能效果或额外使用步骤的信息,这些内容暂未提供。