作者:Andrea Griffiths
排版:Alan Wang
学习如何利用 GitHub Copilot Agent 模式,通过引导式升级、自动化修复以及面向云的迁移,对遗留 Java 项目进行现代化改造。

无论是将应用迁移至云端,还是更新 Java 运行时,对遗留应用进行现代化改造从来都不轻松。冲突或已弃用的依赖项、过时的部署目标,以及潜在的安全漏洞,往往会阻碍顺利推进。

这时,GitHub Copilot Agent ModeGitHub Copilot 应用现代化 VS Code 扩展搭配使用,就能发挥作用。该工具集提供交互式、逐步引导的体验,帮助你更快、更安全地升级和迁移 Java 项目,减少错误并提升信心。

虽然本文聚焦于 Java 现代化,但在 Visual Studio 中,GitHub Copilot Agent Mode 也支持端到端的 .NET 应用现代化。这包括 AI 辅助的 .NET 升级、面向云的迁移路径,以及无缝部署至 Azure —— 为整个现代化过程带来一致的、引导式体验,减少人工操作,加快价值实现。详情可参阅文档

在本文中,你将学习如何在 Visual Studio Code 中结合这些工具来:

  • 分析你的 Java 项目并生成升级计划
  • 使用 GitHub Copilot 自动应用更改
  • 在循环中修复构建问题并验证测试
  • 在升级后检测并修复 CVE

什么是 GitHub Copilot Agent Mode?🤔

这是 GitHub Copilot 的高级功能,使其从被动的代码建议生成器转变为主动的编码协作伙伴。

它就像一位理解你目标的初级开发者,可以自动、迭代地完成多步骤任务,而不需要你逐条写明指令。

Copilot Agent Mode 能做到:

  • 理解高级提示
  • 基于上下文做出决策
  • 执行多步骤任务
  • 根据实时反馈进行迭代
    在这里插入图片描述

它通过与代码、工作区、工具和大语言模型(LLM)的交互,持续规划、执行和优化方案,形成实时反馈循环。

了解更多关于 Copilot Agent Mode 的信息 >

在开始之前,你需要准备:

准备好了吗?让我们开始吧!

概览

当你使用 Java 升级扩展启动 Agent 会话时,Copilot 将执行以下步骤:

  • 分析你的 Java 代码库
  • 生成可定制的升级计划
  • 使用 OpenRewrite 等工具执行代码转换
  • 迭代修复构建错误
  • 通过测试执行验证变更
  • 扫描 CVE,提供安全替换方案
  • 输出完整的总结报告

第一步:在 VS Code 中打开 Java 项目

使用一个遗留 Java 项目(示例或自有),确保已通过 Git 初始化源代码管理,并具备可运行的测试套件(最好包含单元测试)。
git clone https://github.com/your-org/your-legacy-java-app.git
cd your-legacy-java-app
code

第二步:在 VS Code 中启动 Agent 会话

在 GitHub Copilot 聊天侧边栏启动新的 Agent 会话,并选择 GitHub Copilot App Modernization – Java 升级扩展
在这里插入图片描述

在会话中粘贴以下提示开始:

使用 Java 升级扩展,将该项目升级至 Java 21。分析已弃用 API,更新 Gradle 依赖,并提出安全、可测试的迁移计划。

第三步:让 Copilot 扫描并制定计划

Copilot 会分析你的项目并提出一个升级计划。该工具会首先扫描你的:

  • JDK 版本
  • 构建工具配置(Gradle 的 build.gradle 或 Maven 的 pom.xml)
  • 过时或存在安全风险的依赖
  • 已弃用的 API 与语言特性

之后它会生成一个结构化的升级计划,该计划可在 Copilot 聊天界面中编辑。你可以向 Copilot 发出指令,让其在该计划中排除某些模块,或对计划进行任何必要的调整。
在这里插入图片描述

第四步:应用更改并解决错误

批准计划后,Copilot 将开始修改文件、调整导入、修复语法。若遇到构建错误,它会进入“修复-测试”循环,直到项目可正常编译。
在这里插入图片描述

Copilot 会生成详细的升级报告,包括:

  • 更改的文件与提交历史
  • API 和依赖更新
  • 剩余待办与后续步骤
    在这里插入图片描述

示例代码变更:

// Before (deprecated constructor)
View view = this.resolver.resolveViewName("intro", new Locale("EN"));

// After Java 21 upgrade
View view = this.resolver.resolveViewName("intro", Locale.of("EN"));

第五步:迁移到 Azure

为应用做好上云准备,你可以运行评估以识别云迁移问题,并在扩展界面中点击 Migrate to Azure
在这里插入图片描述

根据部署目标的不同,GitHub Copilot 应用现代化工具会识别云迁移问题并给出推荐的操作方案。要设置部署目标,请修改 appmod-java/appcat 文件夹下的 assessment-config.yaml 文件。在本示例中,我们选择 Azure Kubernetes Service (AKS) 作为目标。(其他可选的部署目标包括 Azure App Service、Azure App Service Managed Instance、Azure Container Apps、Azure Kubernetes Service 以及 AKS Automatic 等。)
在这里插入图片描述

系统会生成一份评估报告,详细列出云就绪问题。点击与 Auth Migration issue 类别相关的迁移按钮,即可将本地用户身份验证迁移到 Microsoft Entra ID

与升级过程类似,Copilot 会先制定一个计划,重点说明依赖项更新和配置更改。一旦你批准该计划,Copilot 就会继续执行迁移步骤。
在这里插入图片描述

Copilot 总结了该迁移场景下所做的更改。这些更改包括:

  • 在构建配置中添加了 Microsoft Entra ID 依赖
  • 在 Application.properties 中添加了 Microsoft Entra ID 配置
  • 为 Spring Security 添加了配置适配器以启用 Microsoft Entra ID
  • 添加了文档来说明如何在 Spring WebFlow 应用中实现 Microsoft Entra ID 认证
    在这里插入图片描述

第六步:验证变更与报告

代码更新完成后,就该确认一切是否按预期运行了。Copilot 会引导你使用项目的构建系统运行测试套件。

对于 Maven 项目,你也可以手动运行测试:

./mvnw test

对于 Gradle 项目:

./gradlew test

如果出现失败,Copilot 会帮助调试,甚至可以根据你最近的更改编写缺失的测试。整个过程遵循人机协同(human-in-the-loop)原则,你需要确认所有提议的步骤。

自动化 CVE 扫描

GitHub Copilot 应用现代化会自动对所有变更的依赖项进行全面的 CVE 扫描,这是开发团队长期以来强烈需求的重要安全功能。当检测到漏洞时,agent 会智能地提出安全版本替代方案,或推荐替代库,以确保安全合规。
在这里插入图片描述

部署到 Azure

将应用部署到 Azure 可能是一个漫长且繁琐的过程,并且需要特定技能来编写基础设施即代码。我们简化了这一流程,并实现了 Azure 的自动化部署,让你能够更快地从代码走向云端。
在这里插入图片描述
在这里插入图片描述

Java 现代化完成

就是这样。借助 GitHub Copilot 应用现代化,你可以将遗留的 Java 项目升级为云就绪状态。它可在 Java 升级和迁移场景中修复代码、解决构建问题、验证变更,甚至帮助增强测试覆盖率——所有操作都在一个统一的引导式工作流程中完成。

立即尝试 Copilot Agent Mode

无论你是在进行 Java 现代化、升级 .NET,还是规划下一次迁移,这些增强 Copilot Agent Mode 的扩展都能帮助你分析大型代码库、制定升级或迁移计划、自动修复问题,并节省大量人工调试时间。

开始使用,现代化你的 Java.NET 应用,或了解更多 Azure 的最新 AI 辅助现代化增强功能

Logo

更多推荐