在 Copilot CLI 中使用 GitHub Copilot 的现代化功能来升级 Java 应用

本文概述了Java开发人员如何在 Copilot CLI1 中使用 GitHub Copilot 现代化插件实现应用程序的现代化。 通过使用此方法,开发人员可以在其编码时实现应用程序的现代化。 该插件提供无缝的端到端体验-从升级和迁移到部署-帮助团队加速转换,提高工作效率,并自信地将其应用程序迁移到新式平台。

GitHub Copilot CLI 的截图,显示了 GitHub Copilot 的现代化提示。

注释

GitHub Copilot CLI 适用于 GitHub Copilot Pro、GitHub Copilot Pro+、GitHub Copilot Business 和 GitHub Copilot Enterprise 计划。 如果从组织收到Copilot,则必须在组织的设置中启用Copilot CLI 策略。

通过使用 Copilot CLI 实现现代化,可以直接从终端运行现代化任务,而无需切换到 IDE。 此方法支持交互式(人机循环)和批处理工作流。

你能做什么

能力 Description
Java 升级 升级Java版本(8 → 11 → 17 → 21 → 25),将 Spring Boot 2.x 迁移到 3.x、javax 到 jakarta,以及弃用的 API
Azure迁移 评估和迁移Java应用程序到Azure服务(Azure 服务总线、Azure SQL、Redis、Azure 密钥保管库、Application Insights、托管标识)
CVE 和漏洞修复 扫描和修复 Maven 依赖项中的 CVE 漏洞,包括 Log4j、Spring、Jackson 和 OWASP 依赖项分析
应用程序重新架构 结构性重构,例如将单体应用拆分为微服务、对遗留 UI 进行现代化改造,以及模块提取
部署到 Azure 将升级或迁移Java应用程序直接部署到Azure

先决条件

注释

Azure帐户仅用于将资源部署到Azure,在使用GitHub Copilot现代化进行代码更改时不需要。

安装插件

  1. 添加市场并安装插件:

    copilot plugin marketplace add microsoft/github-copilot-modernization
    copilot plugin install github-copilot-modernization@github-copilot-modernization
    
  2. 通过列出已安装的插件来验证是否已安装插件:

    /plugin list
    

    应在列表中看到 github-copilot-modernization@github-copilot-modernization

小窍门

若要在新版本可用时更新插件,请运行:

copilot plugin update github-copilot-modernization@github-copilot-modernization

启动现代化任务

选项 1:直接从代理开始

导航到Java项目文件夹,并使用现代化代理启动 Copilot CLI:

cd /path/to/your/java-app
copilot --agent=github-copilot-modernization:modernize

选项 2:从 Copilot CLI 内部选择代理

如果已在 Copilot CLI 会话中,请使用 /agent 命令切换到现代化代理:

/agent

从列表中选择modernize

Important

在运行任何现代化提示词之前,您必须先选择 github-copilot-modernization:modernize 代理。 如果不选择代理,Copilot CLI 将使用默认代理,该代理无法使用插件提供的完整多代理业务流程和专用迁移功能。

运行现代化提示

代理处于活动状态后,请用自然语言描述所需内容:

modernize my application

或者更具体:

upgrade this app to Java 21 and Spring Boot 3.2
migrate this Spring Boot app to Azure
fix CVE vulnerabilities in my project

对于无人参与的执行,请使用标志 --allow-all

copilot --agent=github-copilot-modernization:modernize --allow-all

工作流的工作原理

该插件使用自动运行的三阶段工作流。 无需手动调用每个阶段 - 业务流程协调程序会根据请求处理路由。

阶段 1:评估

  • 发现指定路径中的Java应用程序。
  • 分析依赖项、框架和Java版本。
  • 确定现代化机会和风险。
  • 将结果保存到 .github/modernize/assessment/.

阶段 2:规划

  • 加载评估结果。
  • 生成可执行的任务计划。
  • 将计划保存到 .github/modernize/<app>/plan.mdtasks.json.

阶段 3:执行

  • 根据任务类型将任务路由到专用执行程序代理。
  • 每个执行程序都会查询知识库以获取迁移模式。
  • 监控进度,并在失败时自动重试。
  • 创建详细的按任务划分的提交,供审阅。

业务流程协调程序支持多个入口点,具体取决于你的意图:

Workflow 激活时 发生的情况
宽泛意图 使我的应用程序现代化 完整的评估→规划→执行流程
特定任务 “升级到 Java 21” 跳过评估,直接进入计划→执行阶段
执行现有计划 “执行计划” 跳过评估和规划,运行现有计划
无头 使用 --allow-all 进行无人值守执行 与无用户提示时的宽泛意图相同

常见场景

升级Java应用程序

若要将Java应用程序升级到较新的运行时或框架版本,请使用以下示例:

copilot --agent=github-copilot-modernization:modernize
upgrade this project to JDK 21 and Spring Boot 3.2

然后执行现代化任务,包括生成升级计划、执行代码修正、生成项目以及检查漏洞,如以下屏幕截图所示:

GitHub Copilot CLI 的截图,显示 Java 升级场景中正在运行的任务。

该项目已成功升级到 JDK 21 和 Spring Boot 3.2,并显示升级摘要。

GitHub Copilot CLI 的截图,显示 Java 升级摘要。

将Java应用程序迁移到Azure

若要将Java应用程序迁移到 Azure,请描述迁移方案,如以下示例所示。 有关预定义迁移任务的详细信息,请参阅 为Java开发人员GitHub Copilot现代化定义的任务

copilot --agent=github-copilot-modernization:modernize
migrate this application from S3 to Azure Blob Storage

出现此提示时,迁移任务将执行并在 Copilot CLI 中显示进度。

GitHub Copilot CLI 的截图,显示在 Java 迁移场景中运行的任务。

成功将项目迁移到Microsoft Azure Blob 存储时,将显示迁移摘要。

GitHub Copilot CLI 的截图,显示了 Java 迁移摘要

将Java应用程序部署到Azure

升级或迁移应用程序后,可以使用以下示例直接从 Copilot CLI 部署它:

copilot --agent=github-copilot-modernization:modernize
Scan my project and help me plan how to containerize my application using the #appmod-get-containerization-plan tool. Execute the plan. The end goal is to have Dockerfiles that are able to be built.

通过使用此提示,部署任务在 Copilot CLI 中运行并显示进度。

 GitHub Copilot CLI 的Screenshot,其中显示了Java部署详细信息.

成功部署项目后,会显示部署摘要。

 GitHub Copilot CLI 的Screenshot,显示Java部署摘要.

Troubleshooting

找不到插件

# Verify marketplace is added
copilot plugin marketplace list

# Re-add the marketplace if needed
copilot plugin marketplace add microsoft/github-copilot-modernization

# Reinstall
copilot plugin install github-copilot-modernization@github-copilot-modernization

评估失败:找不到Java应用程序

  • 验证 pom.xmlbuild.gradle 存在于项目根目录中。
  • 在启动 Copilot CLI 之前,请确保位于正确的目录中。

MCP 服务器问题

该插件使用在其配置中定义的 MCP 服务器。 如果遇到问题,请尝试重新安装插件以重置 MCP 配置。

提供反馈

如果对 GitHub Copilot 现代化插件有任何反馈,在 github-copilot-appmod 存储库上创建问题。

后续步骤