本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Q 开发者如何为 Java 语言升级转换代码
为了转换您的代码,Amazon Q Developer 会生成一份转换计划,用于升级项目的代码语言版本。转换代码后,它会提供转换摘要和文件差异信息,以便您在接受更改之前查看更改内容。以下各部分提供了有关 Amazon Q 如何执行转换的更多详细信息。
构建代码并创建转换计划
要开始转换您的代码,Amazon Q 会在本地构建您的项目,并生成包含源代码、项目依赖项和构建日志的构建构件。
生成构建构件后,Amazon Q 会在安全的构建环境中构建您的代码,并创建针对您要升级的项目或模块定制的转换计划。转换计划概述了 Amazon Q 将尝试进行的具体更改,包括新的依赖项版本、主要代码更改以及针对已弃用代码的建议替代方案。这些更改基于您的代码的初步构建,并且可能会在转换过程中发生变化。
在转换开始之前,您可以选择将 Amazon Q 提出的更改拆分为多个差异。这样一来,您就可以用更少的更改来更新和测试代码,并且需要您在转换完成后逐步接受更改。
转换您的代码
为了转换您的代码,Amazon Q 会尝试根据转换计划中的提议更改来升级您的代码。当它进行更改时,它会重新构建并运行源代码中的现有单元测试,以迭代方式修复遇到的任何错误。
Amazon Q 在升级您的代码时会尝试进行以下更改:
-
根据 Java 17 的建议更新已弃用的代码组件
-
将常用库和框架升级到与 Java 17 兼容的版本。这包括将以下库和框架更新到其最新可用的主要版本:
-
Apache Commons IO
-
Apache HttpClient
-
bc-fips
-
Cucumber-JVM
-
Hibernate
-
jackson-annotations
-
JakartaEE
-
Javax
-
javax.servlet
-
jaxb-api
-
jaxb-impl
-
jaxen
-
jcl-over-slf4j
-
json-simple
-
jsr305
-
junit
-
junit-jupiter-api
-
Log4j
-
Micronaut
-
Mockito
-
mockito-core
-
Okio
-
PowerMockito
-
Quarkus
-
slf4j
-
slf4j-api
-
Spring Boot
-
Spring Framework
-
Spring Security
-
Swagger
-
testng
-
查看转换摘要并接受更改
转换完成后,Amazon Q 会提供一份转换摘要,其中包含有关其所做更改的详细信息,包括最终构建的状态,该状态表明您的整个项目是否已升级。您还可以查看构建日志摘要,以了解阻碍 Amazon Q 在升级版本中构建代码的任何问题。
转换摘要还包括转换计划中提议的更改与 Amazon Q 最终为升级您的代码所做的更改之间的差异,以及原始计划中未包含的任何其他更改。
查看转换摘要后,您可以在文件差异视图中查看 Amazon Q 提议的更改。在您接受更改之前,Amazon Q 建议的任何代码更改都不会影响您当前的项目文件。转换后的代码在转换完成后的最多 24 小时内可用。
如果您选择让 Amazon Q 将更改拆分为多个差异,它将根据您的应用程序所需的升级提供一个或多个差异并进行更改。如果适用于您的应用程序,则将更改分为以下几组:
-
Java 17 的最低兼容库版本:将依赖项(包括 Springboot JUnit PowerMockito、和)升级到 Java 17 中的最低兼容版本。
-
流行的企业规格应用程序框架:升级流行的企业和应用程序框架,例如 Jakarta EE、Hibernate 和 Micronaut 3。
-
HTTP 客户端实用程序 Web 框架:升级 HTTP 客户端库、Apache Commons 实用程序和 Struts 框架。
-
测试工具框架:升级 Mockito 等测试工具 ArchUnit,然后构建 Jenkins TestContainers 和 Maven Wrapper 等工具。
-
其他处理文档:多种类型的升级,包括 XML 处理和 API 文档 ORMs,比如 Swagger 到 /OpenAPI。 SpringDoc
-
已弃用 APIs、过时的依赖关系和格式:替换已弃用的依赖项 APIs、进行额外的依赖版本升级以及格式化代码更改
Amazon Q 一次只能提供一个差异文件,您必须接受差异更改才能查看以下差异。如果您拒绝差异中的更改,则无法查看任何其他差异。接受来自一个差异的更改后,您可以查看代码的更新并测试更改,然后再继续接受后续更改。
请注意,差异之间可能会有较小的版本降级。例如,您可能会在第一个差异中看到依赖项版本升级到较新版本,而在随后的差异中,则会看到该依赖项的旧版本。这是因为 Amazon Q 可能需要调整版本以适应每个差异中所做的更改。在您接受所有差异的更改后,您的代码将包含最新的可靠版本。
差异的标题将表明提议的变更将导致完全还是部分转换。如果差异表明转换仅部分成功,则它不包括完成转换和成功构建代码所需的所有必要更改。要获得最新版本的代码,请接受所有代码差异,包括部分成功的差异。然后,您可以手动更新您的代码以解决 Amazon Q 无法修复的错误。
完成部分成功的转换
根据代码库的复杂性和具体情况,在某些情况下,转换可能会部分成功。这意味着 Amazon Q 只能转换项目中的某些文件或代码区域。在这种情况下,您必须手动更新剩余的代码,这样您的项目才能使用更新的语言版本进行构建。
为了帮助转换代码的其余部分,您可以在 IDE 中使用 Amazon Q 聊天功能。您可以让 Amazon Q 查看部分更新的文件,并提供新的代码来解决诸如编译错误之类的问题。您还可以使用 /dev 和 @workspace 之类的功能来包含更多项目内容作为上下文,并一次获取有关多个文件的建议。