使用 GitHub Copilot 应用现代化时自定义 Java 项目升级计划

本文介绍如何自定义 GitHub Copilot 应用现代化生成的 Java 项目升级计划。

启动升级会话时,GitHub Copilot 会生成一个 plan.md 文件,该文件概述了升级所需的步骤和任务。 此文件充当升级过程的蓝图,你可以对其进行自定义,以便更好地满足项目的需求。

工具生成 plan.md 文件后,它会在 Visual Studio Code 编辑器中自动打开。 在此阶段,可以查看并自定义计划,以确保它符合特定的升级目标。

文件结构示例 plan.md

以下各节介绍了一个示例 plan.md 文件结构,以便说明自定义点。

关键参数

以下部分介绍计划中可修改的关键参数。

生成工具命令选项

此选项位于 项目信息下,可用于定义用于生成工具执行的自定义命令行参数。 有关有效选项,请参阅 Maven CLIGradle CLI 文档,具体取决于项目。

示例:

  • 对于 MavenBuild tool command options: -Dmaven.javadoc.skip=true -s "/path/to/custom/settings.xml"

  • 对于 GradleBuild tool command options: --info -Penv=production

注释

根据需要将路径替换为实际 settings 文件位置。 显示的路径只是一个示例。

Visual Studio Code 的屏幕截图,其中显示了突出显示了升级目标的示例升级计划。

测试验证

位于 “其他任务” 部分下,可以通过修改 run tests before and after the upgrade 标志启用或禁用测试执行。

  • true设置为启用在升级前后的单元测试。
  • false设置为跳过测试验证。

此设置控制该工具是否运行单元测试,以验证升级期间的功能正确性。

通过调整这些设置,可以微调升级过程,以更好地满足项目的要求。

自定义升级目标并提供指南

在 Java 升级的场景中,除了标准 JDK 或框架的升级之外,你通常需要进行定制化处理,例如应用项目特定的代码更改或更新工具无法自动检测到的内部库。 为了支持这些需求,GitHub Copilot 应用更新现在可在升级计划中实现自定义。 此功能使你能够提供自己的食谱、说明和输入,以指导升级过程。 可以通过修改升级目标和指南部分来执行此自定义。

“升级目标”部分

“升级目标 ”部分中,现在可以在初始提示中指定更多升级目标以及目标。 例如,如果主要任务是将项目从 Java 17 升级到 Java 21,但项目还需要将 Log4j 从 1.x 升级到 2.x,则可以将其列为其他目标,如以下示例提示所示:

## Upgrade Goals
- Upgrade from Java 17 to 21
- Upgrade org.apache.logging.log4j:* to 2.24.3 
- Upgrade org.internal.lib to 2.0

“准则”部分

指南 ”部分定义 Copilot 如何执行升级。 虽然 “升级目标” 部分重点介绍需要升级的内容,但 “指南” 部分包含指导 Copilot 在代码转换期间行为的方法、约定、工具和规则。

可以包括有助于引导 Copilot 如何修改代码的任何说明,如以下说明:

  • 有关用于代码更改的工具、食谱或框架的指南。
  • 对某些升级方法的限制或禁令。
  • 代码样式或约定要求。
  • 链接到代理可以访问的内部文件、文档或脚本的链接。
  • 域知识有助于修复错误或执行升级。
  • 关于代理应如何对代码更改进行批注或评论的要求。
  • 清理升级过程中创建的临时工件的清理说明。

只要 Copilot 可以访问本地文件,此部分的内容可以是纯文本、超链接或对本地文件的引用。

示例:

## Guidelines
- Do not use Log4j 1 to Log4J 2 API bridge to upgrade to Log4J 2. 
- Please follow the code conventions defined in /xxx/bbb/rules.txt.
- Please provide detailed comments explaining why each code change is necessary.
- "com.example:internal-lib:2.0.0" is compatible with Java 21.
- Use our internal MCP tool get_internal_lib_knowledge to retrieve compatibility information for internal libraries.
- After the upgrade, please remove any temporary files created during the process, such as code modification scripts.

包含升级目标和指南部分的 Java 升级计划的屏幕截图。

另请参阅

GitHub Copilot 应用现代化