关于 Jakarta Migration Mcp
这是面向 IntelliJ IDEA 的 Java 迁移插件及 MCP 服务,帮助企业 Java 团队和维护旧系统的开发者将 Java EE 8 的 javax.* 迁移至 Jakarta EE 9+。它结合静态分析、依赖扫描和 OpenRewrite 重构,协助识别风险并规划迁移。
主要功能
- 01扫描 javax.* 用法与迁移风险
- 02分析依赖及传递依赖兼容性
- 03推荐依赖版本和迁移策略
- 04使用 OpenRewrite 自动重构
- 05分析测试覆盖与关键风险区
适用场景
- 01评估旧 Java EE 项目的迁移风险
- 02查找依赖树中的 javax.* 引用
- 03执行并验证 Jakarta EE 迁移重构
MCP 相关
插件通过 MCP 工具与 JetBrains AI Assistant 集成,供其协助迁移决策和代码修改。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
http://localhost:8080/mcp/sseclaude mcp add --transport sse JakartaMigrationMCP http://localhost:8080/mcp/sse{"mcpServers":{"JakartaMigrationMCP":{"type":"sse","url":"http://localhost:8080/mcp/sse"}}}在 Cursor 中打开{"servers":{"JakartaMigrationMCP":{"type":"sse","url":"http://localhost:8080/mcp/sse"}}}在 VS Code 中打开{"mcpServers":{"JakartaMigrationMCP":{"type":"sse","url":"http://localhost:8080/mcp/sse"}}}{"mcpServers":{"JakartaMigrationMCP":{"serverUrl":"http://localhost:8080/mcp/sse"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
🚀 Jakarta 迁移(javax → jakarta)
在 IntelliJ 中直接分析、规划并自动执行 Java EE → Jakarta EE 迁移。
满怀信心地从 Java EE 8(javax.*)迁移到 Jakarta EE 9+。
此插件可检测迁移障碍、分析依赖项,并借助 OpenRewrite 帮助你安全地重构。
⚠️ 免费试用暂时不可用
免费试用已暂停。我们希望恢复试用,但需要你的帮助,让这个项目能够持续发展。
在 GitHub 上赞助此项目,帮助分担持续开发所需的时间和精力。如果此插件为你节省了数小时的迁移工作,请考虑回馈支持,这样我们就能继续开发功能,并为更广泛的 Java 社区恢复免费试用。
付费订阅可使用高级功能(高级重构、平台检测、高级扫描、PDF 报告和 AI 辅助迁移)。免费层仍包含迁移风险分析、依赖项扫描、版本建议和策略洞察。
注意:仍可通过安装此插件的 v1.0 版使用免费试用。
⚠️ 为什么这很重要
从 javax.* 迁移到 jakarta.* 并非简单的重命名。
- 依赖项会出现问题
- 框架需要升级
- 应用服务器必须更换
- 隐藏的引用会导致运行时故障
此插件可帮助你及早发现风险并系统地完成迁移。
� 隐私与分析
匿名数据收集
此插件会收集匿名使用统计信息和错误报告,以帮助改进产品:
我们收集的内容:
- 匿名用户 ID(随机生成的 UUID)
- 插件版本和环境
- 使用事件(额度使用情况、升级点击)
- 错误报告及堆栈跟踪(发生错误时)
- 当前 UI 标签页和操作上下文
我们不会收集的内容:
- 个人信息或可识别数据
- 源代码或项目内容
- IP 地址或位置数据
- 用户名或电子邮箱地址
数据用途:
- 提高迁移检测的准确性
- 更快地修复错误和崩溃问题
- 了解哪些功能最实用
- 规划未来改进
数据存储:
- 所有数据都安全存储在 Supabase 中(符合 GDPR)
- 匿名用户 ID 存储在你的 IDE 配置中
退出选项
你可以随时停用数据收集:
通过 About 标签页:
- 打开 File → Settings → Plugins → Jakarta Migration
- 点击 About 标签页
- 关闭“Usage Analytics”和/或“Error Reporting”
- 更改会自动保存
退出后会发生什么:
- 不再收集新的使用事件
- 不再发送新的错误报告
- 先前收集的匿名数据仍保留在 Supabase 中
- 插件功能不受影响——所有功能均可正常使用
��️ IntelliJ IDEA 插件
下载
🔍 你可以做什么
📊 分析项目
- 扫描整个代码库,查找
javax.*的使用情况 - 识别迁移障碍和兼容性问题
- 估算迁移所需的工作量和风险
📦 了解依赖项
- 检测哪些依赖项兼容 Jakarta
- 深度传递扫描——在完整依赖树中查找隐藏的
javax.*引用 - 获取兼容版本建议
- 通过依赖关系图直观呈现模块关系
🧠 规划迁移
- 比较迁移策略
- 确定所需的平台升级(Spring、应用服务器等)
✅ 验证迁移就绪情况
- 增强的测试覆盖率分析:检测实际验证 javax/jakarta 兼容性的集成测试
- 关键风险区域检测:识别存在迁移问题且测试覆盖率不足的模块
- 迁移感知置信度评分:优先考虑能发现实际迁移问题的测试,而非使用模拟对象的单元测试
📄 生成专业报告
- HTML 转 PDF 报告:精美、专业的报告,包含执行摘要
- 多种模板:专业、技术和简约报告样式
- 全面分析:依赖项、平台、高级扫描和建议
- 在更改代码前做出明智的决策
⚡ 自信地重构
- 应用由 OpenRewrite 提供支持的重构配方
- 自动将
javax.*转换为jakarta.* - 使用内置历史记录撤销更改
🧪 高级重构(高级版)
- 构建复杂的多步骤重构序列
- 在隔离的沙箱 testcontainers 中测试重构,然后再应用
- 实验历史记录 — 比较结果、重新运行并克隆过往实验
- 安全验证重构不会破坏构建
🤖 AI 驱动的功能
- 与 JetBrains AI Assistant 集成的 MCP 工具
- 协助做出迁移决策并更改代码
🧪 实验性功能
- 运行时分析 – 检测运行时问题并提供修复建议
- 报告 – 将迁移分析导出为 PDF
🧰 支持的技术
- Java: 11、17、21、25
- 构建工具: Maven、Gradle
- 框架: Spring Boot 3+、Spring Framework 6+、Jakarta EE 9+
- 应用服务器: Tomcat 10+、WildFly 27+、Jetty 12+、Open Liberty 23+、Payara 7+、JBoss EAP 8+、WebSphere、WebLogic
- Jakarta API: Servlet、JSP、JPA、CDI、Bean Validation、JAX-RS、JAX-WS、JMS、WebSocket、JSON-B、JSON-P
🚀 快速入门
- 运行分析 – 扫描项目中的
javax.*用法 - 查看结果 – 了解风险和迁移工作量
- 制定策略 – 选择最佳迁移方案
- 重构 – 应用自动化的 OpenRewrite 配方
- 验证 – 重新运行分析,确认迁移成功
⚙️ 技术详情
- 基于 IntelliJ Platform 构建
- 使用 OpenRewrite 执行安全、自动化的转换
- 对源代码、依赖项和配置执行静态分析
- 兼容 IntelliJ IDEA 2023.3+(Community 和 Ultimate)
💡 免费版与高级版
免费版
- 迁移风险分析
- 依赖项扫描
- 版本建议
- 迁移策略见解
高级版
- 一键重构
- 高级重构 — 在沙箱 testcontainers 中测试重构序列
- 平台检测(框架、应用服务器)
- 高级扫描与分析
- PDF 报告
- AI 辅助迁移工具
🎯 适用对象
- 升级到 Jakarta EE 的企业 Java 团队
- 维护旧版 Java EE 系统的开发者
- 迁移到 Spring Boot 3+ 或现代应用服务器的团队
技术文档
截图
.gallery { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; } .gallery-item { width: 25%; /* Adjust based on desired columns */ box-sizing: border-box; } .gallery-item img { width: 100%; height: auto; object-fit: cover; border-radius: 8px; } @media (max-width: 768px) { .gallery-item { width: 50%; } } @media (max-width: 480px) { .gallery-item { width: 100%; } }
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。