使用GitHub Copilot代理模式现代化Java项目的完整指南

本文详细介绍了如何使用GitHub Copilot代理模式和Java升级扩展来现代化遗留Java项目,包括代码分析、自动升级、构建错误修复、测试验证、CVE扫描以及Azure云迁移等完整技术流程。

使用GitHub Copilot代理模式现代化Java项目的完整指南

无论您是将应用程序迁移到云端还是更新Java运行时环境,现代化遗留应用程序通常都很复杂。冲突或已弃用的依赖项、过时的部署目标和遗留的安全漏洞常常阻碍顺利进展。

这时GitHub Copilot代理模式与GitHub Copilot应用现代化VS Code扩展就派上用场了。这套工具提供了交互式、分步体验,帮助您更快地升级和迁移Java项目,减少错误并增强信心。

虽然本指南重点介绍Java现代化,但我们也通过GitHub Copilot代理模式在Visual Studio中支持端到端的.NET应用现代化。这包括AI辅助的.NET升级、云就绪迁移路径以及无缝部署到Azure——在整个现代化旅程中提供一致的引导体验,减少手动工作并加速价值实现时间。在文档中了解更多信息。

在本文中,您将学习如何在Visual Studio Code中一起使用这些工具来:

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

什么是GitHub Copilot代理模式?

这是GitHub Copilot的一项高级功能,将该工具从被动的建议生成器转变为主动的编码协作者。

这就像在您的团队中有一名初级开发人员,他理解您想要实现的目标,并通过多个步骤自动迭代地实现它,而无需您详细说明每个指令。

Copilot代理模式可以:

  • 理解高级提示
  • 在上下文中做出决策
  • 执行多步骤任务
  • 通过实时反馈迭代更改

流程图说明了Copilot代理模式如何将用户提示连接到实时反馈循环,在该循环中,代理与您的代码、工作空间、工具和大型语言模型(LLM)交互,以持续规划、行动和完善其解决方案。

了解更多关于Copilot代理模式的信息 >

首先,您需要准备一些东西

要跟随操作,请确保您有:

  • Visual Studio Code
  • GitHub Copilot许可证(Pro、Pro+、Business和Enterprise订阅者还可以访问Copilot编码代理)
  • GitHub Copilot应用现代化 - Java升级扩展
  • 基于Git的遗留Java项目,使用Maven或Gradle构建(任何使用JDK 8或更高版本的项目都可以)

准备好了吗?现在让我们深入了解具体内容。

概述

当您使用Java升级扩展启动代理会话时,Copilot执行以下操作:

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

开始使用,第1步:在VS Code中打开Java项目

使用示例遗留Java项目(或您自己的项目),使用Git初始化源代码控制,并具有工作的测试套件(最好有单元测试)。

1
2
3
git clone https://github.com/your-org/your-legacy-java-app.git
cd your-legacy-java-app
code .

第2步:在VS Code中启动代理会话

启动GitHub Copilot聊天侧边栏并开始新的代理会话。从可用工具中选择GitHub Copilot应用现代化 - Java升级。

在代理会话中复制并粘贴以下内容开始:

1
使用Java升级工具,将此项目升级到Java 21。分析已弃用的API,更新Gradle依赖项,并提出安全、可测试的迁移计划。

第3步:让Copilot扫描和规划

Copilot将分析您的项目并提出升级计划。该工具首先扫描您的:

  • JDK版本使用情况
  • 构建工具配置(Gradle的build.gradle或Maven的pom.xml)
  • 过时或不安全的依赖项
  • 已弃用的API和语言功能

然后它创建一个结构化的升级计划,可在Copilot聊天中编辑。您可以提示Copilot从此升级中排除模块或对计划进行任何必要的调整。

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

一旦您批准计划,Copilot开始升级文件、调整导入和修复语法错误。如果出现构建错误,Copilot将进入修复和测试循环,直到项目干净编译。

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

  • 更改的文件和提交历史
  • API和依赖项更新
  • 剩余的待办事项和后续步骤

升级前后的示例代码更改:

1
2
3
4
5
// 升级前(已弃用的构造函数)
View view = this.resolver.resolveViewName("intro", new Locale("EN"));

// Java 21升级后
View view = this.resolver.resolveViewName("intro", Locale.of("EN"));

第5步:迁移到Azure

要使应用程序准备好Azure,您可以运行应用程序评估以识别云就绪问题。从GitHub Copilot应用现代化扩展UI中,点击"迁移到Azure"。

根据部署目标,GitHub Copilot应用现代化将识别云迁移问题并提供推荐操作。要设置部署目标,请修改appmod-java/appcat文件夹下的assessment-config.yaml文件。在此示例中,我们将选择Azure Kubernetes服务(AKS)作为目标。(其他部署目标包括Azure应用服务、Azure应用服务托管实例、Azure容器应用、Azure Kubernetes服务和AKS自动等。)

生成评估报告,详细说明云就绪问题。点击与身份验证迁移问题类别关联的迁移按钮,从本地用户身份验证迁移到Microsoft Entra ID。

与升级过程类似,Copilot首先制定一个计划,突出显示依赖项更新和配置更改。一旦您批准计划,Copilot将继续执行迁移步骤。

Copilot总结了为此迁移场景所做更改的列表。这些更改包括:

  • 在构建配置中添加Microsoft Entra ID依赖项
  • 在Application.properties中添加Microsoft Entra ID配置
  • 为Spring security添加配置适配器以启用Microsoft Entra ID
  • 添加文档说明如何在Spring WebFlow应用中实现Microsoft Entra ID身份验证

第6步:验证更改并查看报告

随着代码更新完成,是时候确认一切按预期工作了。Copilot将指导您使用项目的构建系统运行测试套件。

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

1
./mvnw test

对于Gradle项目:

1
./gradlew test

如果有失败,Copilot将帮助调试甚至基于您最近的更改编写缺失的测试。所有这些都遵循人在循环原则,必须确认所有提议的步骤。

自动化CVE扫描器

GitHub Copilot应用现代化自动对所有更改的依赖项执行全面的CVE扫描,这是开发团队持续请求的关键安全功能。当检测到漏洞时,代理智能地提出安全版本替换或推荐替代库以保持安全合规性。

部署到Azure

将应用程序部署到Azure可能是一个漫长、艰苦的过程,需要特定的技能来编写基础设施即代码。我们简化了此步骤并自动化了到Azure的部署,因此您可以更快地从代码到云端。

Java现代化完成

就是这样。使用GitHub Copilot应用现代化,您可以获取遗留Java项目并使其云就绪。它在单个引导工作流中修复Java升级和迁移场景的代码、解决构建问题、验证更改,甚至帮助加强测试覆盖率。

立即尝试Copilot代理模式

无论您是现代化Java、升级.NET还是规划下一次迁移,这些增强Copilot代理模式的扩展都准备好帮助您分析大型代码库、规划升级或迁移、自动修复问题,并节省数小时的手动调试时间。

要开始使用,请现代化您的Java和.NET应用程序,或从Azure了解最新的AI辅助现代化增强功能。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计