使用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初始化源代码控制,并具有工作的测试套件(最好有单元测试)。
|
|
第2步:在VS Code中启动代理会话
启动GitHub Copilot聊天侧边栏并开始新的代理会话。从可用工具中选择GitHub Copilot应用现代化 - Java升级。
在代理会话中复制并粘贴以下内容开始:
|
|
第3步:让Copilot扫描和规划
Copilot将分析您的项目并提出升级计划。该工具首先扫描您的:
- JDK版本使用情况
- 构建工具配置(Gradle的build.gradle或Maven的pom.xml)
- 过时或不安全的依赖项
- 已弃用的API和语言功能
然后它创建一个结构化的升级计划,可在Copilot聊天中编辑。您可以提示Copilot从此升级中排除模块或对计划进行任何必要的调整。
第4步:应用更改并解决错误
一旦您批准计划,Copilot开始升级文件、调整导入和修复语法错误。如果出现构建错误,Copilot将进入修复和测试循环,直到项目干净编译。
Copilot生成详细的升级报告,包括:
- 更改的文件和提交历史
- API和依赖项更新
- 剩余的待办事项和后续步骤
升级前后的示例代码更改:
|
|
第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项目,您也可以手动运行测试:
|
|
对于Gradle项目:
|
|
如果有失败,Copilot将帮助调试甚至基于您最近的更改编写缺失的测试。所有这些都遵循人在循环原则,必须确认所有提议的步骤。
自动化CVE扫描器
GitHub Copilot应用现代化自动对所有更改的依赖项执行全面的CVE扫描,这是开发团队持续请求的关键安全功能。当检测到漏洞时,代理智能地提出安全版本替换或推荐替代库以保持安全合规性。
部署到Azure
将应用程序部署到Azure可能是一个漫长、艰苦的过程,需要特定的技能来编写基础设施即代码。我们简化了此步骤并自动化了到Azure的部署,因此您可以更快地从代码到云端。
Java现代化完成
就是这样。使用GitHub Copilot应用现代化,您可以获取遗留Java项目并使其云就绪。它在单个引导工作流中修复Java升级和迁移场景的代码、解决构建问题、验证更改,甚至帮助加强测试覆盖率。
立即尝试Copilot代理模式
无论您是现代化Java、升级.NET还是规划下一次迁移,这些增强Copilot代理模式的扩展都准备好帮助您分析大型代码库、规划升级或迁移、自动修复问题,并节省数小时的手动调试时间。
要开始使用,请现代化您的Java和.NET应用程序,或从Azure了解最新的AI辅助现代化增强功能。