CLI 指南
使用 Migration Toolkit for Applications 命令行界面迁移应用程序
摘要
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
第 1 章 MTA 命令行界面简介 复制链接链接已复制到粘贴板!
Migration Toolkit for Applications (MTA)命令行界面(CLI)提供了一组全面的规则,用于评估应用程序在 Red Hat OpenShift 上进行容器化和部署。通过使用 MTA CLI,您可以为使用不同语言编写的应用程序评估和优先级迁移和优先级。例如,您可以使用 MTA 分析使用以下语言编写的应用程序:
- Java
- Go
- .NET
- Node.js
- Python
分析使用 .NET 语言编写的应用程序只是一个技术预览功能。Developer Preview(开发人员预览)功能不被红帽支持,其功能可能并不完善且不是生产环境就绪。不要将开发人员预览功能用于生产环境或业务关键型工作负载。开发人员预览功能可以在之前可能地包含在红帽产品产品中提前访问即将推出的产品功能,使客户能够测试功能并在开发过程中提供反馈。这些功能可能没有任何文档,可能会随时被更改或删除,测试也会受到限制。红帽可能会提供在没有关联 SLA 的情况下提交对开发人员预览功能的反馈。
分析使用 Python 和 Node.js 语言编写的应用程序只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
CLI 提供了大量报告,突出显示分析而无需使用其他工具。您可以使用 CLI 自定义 MTA 分析选项,或与外部自动化工具集成。
第 2 章 支持的 MTA 迁移路径 复制链接链接已复制到粘贴板!
您可以运行 Migration Toolkit for Applications (MTA)分析来评估您的应用程序是否适合迁移到多个目标平台。MTA 支持以下迁移路径:
源平台 TOKEN | 迁移到 JBoss EAP 7 和 8 | OpenShift (云就绪) | OpenJDK 11、17 和 21 | Jakarta EE 9 | Camel 3 和 4 | Red Hat Runtimes 中的 Spring Boot | Quarkus | Open Liberty |
---|---|---|---|---|---|---|---|---|
Oracle WebLogic Server | ✔ | ✔ | ✔ | - | - | - | - | - |
IBM WebSphere Application Server | ✔ | ✔ | ✔ | - | - | - | - | ✔ |
JBoss EAP 4 | ✘ [a] | ✔ | ✔ | - | - | - | - | - |
JBoss EAP 5 | ✔ | ✔ | ✔ | - | - | - | - | - |
JBoss EAP 6 | ✔ | ✔ | ✔ | - | - | - | - | - |
JBoss EAP 7 | ✔ | ✔ | ✔ | - | - | - | ✔ | - |
Thorntail | ✔ [b] | - | - | - | - | - | - | - |
Oracle JDK | - | ✔ | ✔ | - | - | - | - | - |
Camel 2 | - | ✔ | ✔ | - | ✔ | - | - | - |
Spring Boot | - | ✔ | ✔ | ✔ | - | ✔ | ✔ | - |
任何 Java 应用程序 | - | ✔ | ✔ | - | - | - | - | - |
任何 Java EE 应用程序 | - | - | - | ✔ | - | - | - | - |
[a]
虽然 MTA 目前不提供此迁移路径的规则,但红帽咨询可帮助从任何源平台迁移到 JBoss EAP 7。
[b]
需要 JBoss Enterprise Application Platform expansion pack 2 (EAP XP 2)
|
..NET 迁移路径
源平台 TOKEN | OpenShift (云就绪) | 迁移到 .NET 8.0 |
---|---|---|
.NET Framework 4.5+(仅限 Windows) | ✔ | ✔ |
分析使用 .NET 语言编写的应用程序只是一个技术预览功能。Developer Preview(开发人员预览)功能不被红帽支持,其功能可能并不完善且不是生产环境就绪。不要将开发人员预览功能用于生产环境或业务关键型工作负载。开发人员预览功能可以在之前可能地包含在红帽产品产品中提前访问即将推出的产品功能,使客户能够测试功能并在开发过程中提供反馈。这些功能可能没有任何文档,可能会随时被更改或删除,测试也会受到限制。红帽可能会提供在没有关联 SLA 的情况下提交对开发人员预览功能的反馈。
第 3 章 安装 MTA 命令行界面 复制链接链接已复制到粘贴板!
您可以在 Linux、Windows 或 macOS 操作系统上安装应用程序(MTA)命令行界面(CLI)。
您还可以安装 CLI 以用于 Windows 上的 Docker。但请注意,这只是开发者技术预览功能。
3.1. 使用 .zip 文件安装 CLI 复制链接链接已复制到粘贴板!
您可以使用 官方 MTA 下载页面的可下载 .zip
文件安装 Applications (MTA)命令行界面(CLI)的 Migration Toolkit for Applications (MTA )命令行界面(CLI)。
先决条件
registry.redhat.io
的 Red Hat Container Registry 身份验证。红帽从需要身份验证的registry.redhat.io
中分发容器镜像。如需了解更多详细信息,请参阅 Red Hat Container Registry 身份验证。注意这个先决条件不适用于无容器模式。如需更多信息,请参阅 在无容器模式下分析应用程序。
- 已安装 Java Development Kit (JDK)版本 17 或更高版本。
-
您可以设置
JAVA_HOME
环境变量。 -
已安装 Maven 版本 3.9.9 或更高版本,并将其二进制文件添加到
$PATH
变量中。
流程
进入 MTA 下载页面 并下载以下特定于操作系统的 CLI 文件或
src
文件之一:- mta-7.3.2-cli-linux-amd64.zip
- mta-7.3.2-cli-linux-arm64.zip
- mta-7.3.2-cli-darwin-amd64.zip
- mta-7.3.2-cli-darwin-arm64.zip
- mta-7.3.2-cli-windows-amd64.zip
- mta-7.3.2-cli-windows-arm64.zip
- mta-7.3.2-cli-src.zip
-
将
.zip
文件提取到$HOME
目录中的.kantra
目录。.zip
文件提取mta-cli
二进制文件,以及其他所需的目录和文件。 将
mta-cli
二进制文件移到$PATH
变量中。注意您可以将
mta-cli
二进制文件放在$PATH
变量中包含的任何文件夹中。或者,您可以添加包含mta-cli
的文件夹到$PATH
。这样,在使用 CLI 时不需要指定完整路径。
3.2. 在断开连接的环境中安装 CLI 复制链接链接已复制到粘贴板!
当您的系统在断开连接的环境中时,您可以通过执行以下操作安装 Migration Toolkit for Applications (MTA)命令行界面(CLI):
- 使用外部计算机下载所需的镜像。
- 将下载的镜像复制到您要在其上安装 MTA CLI 的系统中。
以下流程只适用于容器模式。
在断开连接的环境中的分析输出通常会产生较少的事件,因为依赖项分析在没有访问 Maven 的情况下无法正常运行。
先决条件
- 从 Migration Toolkit for Applications Red Hat Developer 页 下载了所需的 MTA CLI 二进制文件。
- 您在您的系统上安装了 Podman 工具。
对于 Java 应用程序的分析,您可以通过将
--run-local
标志设置为false
来启用容器运行时使用:--run-local=false
--run-local=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 非 Java 应用程序的分析默认在容器模式下运行。
流程
在连接的设备中执行以下步骤:
向 registry.redhat.io 进行身份验证:
podman login registry.redhat.io
$ podman login registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
mta-cli
二进制文件。二进制文件拉取所需的供应商镜像。例如:mta-cli analyze
$ mta-cli analyze
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要此命令仅拉取所需的镜像。例如,如果您运行需要 Java 镜像的命令,则不会拉取 .NET 镜像。
显示镜像列表:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存镜像:
podman save <image_ID> -o <image_name>.image
$ podman save <image_ID> -o <image_name>.image
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将镜像复制到 USB 驱动器或者直接复制到断开连接的设备的文件系统中。
在断开连接的设备中,输入:
podman load --input <image_name>.image
$ podman load --input <image_name>.image
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. 安装 CLI 以用于 Windows 上的 Docker 复制链接链接已复制到粘贴板!
要将使用 .NET 框架版本 4.5 或更高版本构建的应用程序迁移到跨平台 .NET 8.0,您必须安装 CLI 以用于 Windows 上的 Docker。为此,您必须将 Docker 配置为首先使用 Windows 容器。
先决条件
- 具有 Windows 11+ 64 位版本 21H2 或更高版本的主机。
- 您下载了适用于 Windows 安装程序的 Docker 桌面。如需了解更多详细信息,请参阅在 Windows 上安装 Docker 桌面。
流程
- 使用管理员特权打开 PowerShell。
确保已安装并启用 Hyper-V:
PS C:\Users\<user_name>> Enable-WindowsOptionalFeature -Online ` -FeatureName Microsoft-Hyper-V-All
PS C:\Users\<user_name>> Enable-WindowsOptionalFeature -Online ` -FeatureName Microsoft-Hyper-V-All
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PS C:\Users\<user_name>> Enable-WindowsOptionalFeature -Online ` -FeatureName Containers
PS C:\Users\<user_name>> Enable-WindowsOptionalFeature -Online ` -FeatureName Containers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可能需要重启 Windows 才能使更改生效。
在 Windows 上安装 Docker 桌面。
双击
Docker_ Edition_Installer.exe 文件来运行安装程序
。默认情况下,Docker Desktop 已安装到
C:\Program Files\Docker\Docker
路径。确保 Docker 将 Windows 容器作为后端运行,而不是 Linux 容器:
- 在 Windows 任务栏中,右键单击 Docker 图标。
- 单击 Switch to Windows containers。
在 PowerShell 中,为 MTA 创建文件夹:
PS C:\Users\<user_name>> mkdir C:\Users\<user_name>\MTA
PS C:\Users\<user_name>> mkdir C:\Users\<user_name>\MTA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
mta-7.3.2-cli-windows.zip
文件提取到MTA
文件夹:PS C:\Users\<user_name>> cd C:\Users\<user_name>\Downloads
PS C:\Users\<user_name>> cd C:\Users\<user_name>\Downloads
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PS C:\Users\<user_name>> Expand-Archive ` -Path "{ProductShortNameLower}-{ProductVersion}-cli-windows.zip" ` -DestinationPath "C:\Users\<user_name>\MTA"
PS C:\Users\<user_name>> Expand-Archive ` -Path "{ProductShortNameLower}-{ProductVersion}-cli-windows.zip" ` -DestinationPath "C:\Users\<user_name>\MTA"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 Docker 正在运行 Windows 容器,将
OS/Arch
设置为windows/amd64
:PS C:\Users\<user_name>> docker version
PS C:\Users\<user_name>> docker version
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
CONTAINER_TOOL
环境变量设置为使用 Docker:PS C:\Users\<user_name>> $env:CONTAINER_TOOL="C:\Windows\system32\docker.exe"
PS C:\Users\<user_name>> $env:CONTAINER_TOOL="C:\Windows\system32\docker.exe"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
DOTNET_PROVIDER_IMG
环境变量设置为使用上游dotnet-external-provider
:PS C:\Users\<user_name>> $env:DOTNET_PROVIDER_IMG="quay.io/konveyor/dotnet-external-provider:v0.5.0"
PS C:\Users\<user_name>> $env:DOTNET_PROVIDER_IMG="quay.io/konveyor/dotnet-external-provider:v0.5.0"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
RUNNER_IMG
环境变量以使用上游镜像:PS C:\Users\<user_name>> $env:RUNNER_IMG="quay.io/konveyor/kantra:v0.5.0"
PS C:\Users\<user_name>> $env:RUNNER_IMG="quay.io/konveyor/kantra:v0.5.0"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 使用 MTA 命令行界面分析 Java 应用程序 复制链接链接已复制到粘贴板!
根据您的场景,您可以使用 Migration Toolkit for Applications (MTA) CLI 执行以下操作:
- 对单个应用程序运行分析。
对多个应用程序运行分析:
-
在早于 7.1.0 的 MTA 版本中,您可以输入一系列 -
analyze
命令,每个命令都针对某个应用程序,各自生成单独的报告。如需更多信息,请参阅 针对应用程序运行 MTA CLI。 -
在 MTA 版本 7.1.0 及更新的版本中,您可以使用--
bulk
选项一次分析多个应用程序并生成单个报告。请注意,这个功能只是一个技术预览功能。如需更多信息,请参阅 分析多个应用程序。
-
在早于 7.1.0 的 MTA 版本中,您可以输入一系列 -
从 MTA 版本 7.2.0 开始,您可以在无容器模式下运行 Java 应用程序的应用程序分析。请注意,这个选项会被默认设置,只有在满足所有要求时才自动使用。如需更多信息,请参阅 在无容器模式中分析应用程序。
但是,如果您要使用 Java 以外的语言分析应用程序,或者使用 转换命令,您仍需要使用容器。
在断开连接的环境中的分析输出通常会产生较少的事件,因为依赖项分析在没有访问 Maven 的情况下无法正常运行。
MTA CLI 支持使用 分析器-lsp
运行源代码和二进制分析。analyzer-lsp
是一个使用语言提供程序评估规则的工具。
4.1. 分析单个应用程序 复制链接链接已复制到粘贴板!
您可以使用 Migration Toolkit for Applications (MTA) CLI 对单个应用程序执行应用程序分析。
在分析过程中,无法从编译的 Java 二进制文件提取依赖项列表,特别是当依赖项没有嵌入到二进制中时。
流程
可选:列出可用于分析的目标技术:
mta-cli analyze --list-targets
$ mta-cli analyze --list-targets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行分析:
mta-cli analyze --input <path_to_input> --output <path_to_output> --source <source_name> --target <target_name>
$ mta-cli analyze --input <path_to_input> --output <path_to_output> --source <source_name> --target <target_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定以下参数:
-
--input
:要评估的应用程序。 --output
:所生成的报告的输出目录。mta-cli analyze
创建以下分析报告:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
--source
:应用程序迁移的源技术,如weblogic
。 -
--target
: 应用程序迁移的目标技术,如eap8
。
-
访问生成的分析报告:
在
mta-cli analyze
命令的输出中,复制index.html
分析报告文件的路径:Report created: <output_report_directory>/index.html Access it at this URL: file:///<output_report_directory>/index.html
Report created: <output_report_directory>/index.html Access it at this URL: file:///<output_report_directory>/index.html
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 粘贴您选择的浏览器的路径。
或者,按 Ctrl 并单击报告文件的路径。
4.2. 分析多个应用程序 复制链接链接已复制到粘贴板!
您可以使用 Migration Toolkit for Applications (MTA) CLI 一次对多个应用程序执行应用程序分析,并生成组合报告。
分析多个应用程序只是一个技术预览功能。Developer Preview(开发人员预览)功能不被红帽支持,其功能可能并不完善且不是生产环境就绪。不要将开发人员预览功能用于生产环境或业务关键型工作负载。开发人员预览功能可以在之前可能地包含在红帽产品产品中提前访问即将推出的产品功能,使客户能够测试功能并在开发过程中提供反馈。这些功能可能没有任何文档,可能会随时被更改或删除,测试也会受到限制。红帽可能会提供在没有关联 SLA 的情况下提交对开发人员预览功能的反馈。
流程
对多个应用程序运行分析。
重要您必须为每个 analyze 命令输入一个输入,但请确保为所有输入输入相同的输出目录。
例如,要分析应用程序
A
、B
和C
示例,请输入以下命令:对于输入
A
,请输入:mta-cli analyze --bulk --input <path_to_input_A> --output <path_to_output_ABC> --source <source_A> --target <target_A>
$ mta-cli analyze --bulk --input <path_to_input_A> --output <path_to_output_ABC> --source <source_A> --target <target_A>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于输入
B
,请输入:mta-cli analyze --bulk --input <path_to_input_B> --output <path_to_output_ABC> --source <source_B> --target <target_B>
$ mta-cli analyze --bulk --input <path_to_input_B> --output <path_to_output_ABC> --source <source_B> --target <target_B>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于输入
C
,请输入:mta-cli analyze --bulk --input <path_to_input_C> --output <path_to_output_ABC> --source <source_C> --target <target_C>
$ mta-cli analyze --bulk --input <path_to_input_C> --output <path_to_output_ABC> --source <source_C> --target <target_C>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 访问分析报告。MTA 生成单个报告,列出在迁移应用程序前必须解决的所有问题。
4.3. 在无容器模式中分析应用程序 复制链接链接已复制到粘贴板!
从 MTA 7.2.0 开始,您可以使用不需要安装容器运行时的 MTA CLI 对 Java 应用程序执行应用程序分析。
在 MTA 7.2.0 及更新的版本中,无容器 CLI 是默认模式。要启用 Java 应用程序的容器运行时使用,您必须将 --run-local
标志设置为 false
:
--run-local=false
--run-local=false
其他应用程序的分析会自动在容器模式下运行
先决条件
- 已安装 MTA CLI。如需更多信息,请参阅使用 .zip 文件安装 CLI。
- 已安装 Java Development Kit (JDK)版本 17 或更高版本。
-
如果您在 Red Hat Enterprise Linux (RHEL)或 Fedora 上使用 OpenJDK,则代表已安装 Java
devel
软件包。 - 已安装 Maven 版本 3.9.9 或更高版本。
CLI 假设在 system 变量中正确注册了
mvn
二进制文件的路径。因此,请确保将mvn
添加到以下变量中:-
Windows 的路径。
-
用于 Linux 和 macOS 的
PATH
。
-
Windows 的路径。
-
您可以设置
JAVA_HOME
环境变量。 您可以设置
JVM_MAX_MEM
系统变量。注意如果没有设置
JVM_MAX_MEM
,分析可能会挂起,因为 Java 可能需要超过默认的JVM_MAX_MEM
值的内存。有关 Gradle 分析:
- 已安装 OpenJDK 版本 8。
-
您可以设置
$JAVA8_HOME
,并指向 OpenJDK 8 主目录。 - 您的项目有一个 Gradle 打包程序。
流程
可选:显示所有
mta-cli analyze
命令选项:mta-cli analyze --help
$ mta-cli analyze --help
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行应用程序分析:
mta-cli analyze --overwrite --input <path_to_input> --output <path_to_output> --target <target_source>
$ mta-cli analyze --overwrite --input <path_to_input> --output <path_to_output> --target <target_source>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果存在,--
overwrite
选项会覆盖输出文件夹。
4.4. analyze 命令选项 复制链接链接已复制到粘贴板!
以下是您可以和 mta-cli analyze
命令一起使用的选项,以满足您的需要的命令行为。
选项 | 描述 |
---|---|
| 分析开源库。 |
|
set 当您禁用 Maven 搜索时,MTA 会首先尝试从 JAR 文件的 POM 文件(若有)决定依赖项。如果此方法不成功,则 MTA 会通过目录结构来确定依赖项。这个方法可能无法生成可靠的依赖项分类,因为软件包结构可能与 MTA 预期的不同。您可能会看到更多事件,因为某些依赖项可能会被错误地归类为内部。
默认情况下, |
| 每个事件输出中要包含的源代码数。默认值为 100。 |
| 依赖项目录。 |
|
使用分析运行默认规则集。默认值是 |
|
显示 |
| HTTP 代理字符串 URL。 |
| HTTPS 代理字符串 URL。 |
| 基于自定义变量选择事件的表达式,例如: !package=io.demo.config-utils
|
| 应用源代码或二进制文件的路径。 |
| 用于收集 trace 的 Jaeger 端点。 |
| 创建分析和依赖输出作为 JSON 文件。 |
| 根据指定的标签选择器表达式运行规则。 |
| 列出源应用程序中的所有语言。二进制应用程序不支持此标志。 |
| 列出可用的受支持提供程序。 |
| 列出可用迁移源的规则。 |
| 列出可用迁移目标的规则。 |
| 要使用的自定义 Maven 设置文件的路径。 |
| 分析模式。必须设置为以下值之一:
|
| proxy-excluded URL (仅与代理相关)。 |
| 分析输出的目录的路径。 |
| 覆盖输出目录。 |
| 包含规则文件的文件名或目录。 |
| 不要生成静态报告。 |
| 要考虑分析的源技术。要指定多个源,请重复该参数,例如: --source <source_1> --source <source_2> ...
|
| 要考虑分析的目标技术。要指定多个目标,请重复该参数,例如: --target <target_1> --target <target_2> ...
|
| 日志级别。默认值为 4。 |
| 不要清理临时资源。 |
第 6 章 查看分析报告 复制链接链接已复制到粘贴板!
分析应用程序后,您可以访问分析报告来检查应用程序迁移工作的详细信息。
6.1. 访问分析报告 复制链接链接已复制到粘贴板!
当您运行应用程序分析时,会在您在命令行中使用-- output 参数指定的输出
目录中生成报告。
流程
从分析输出中复制
index.html
文件的路径,并将其粘贴到您选择的浏览器中:Report created: <output_report_directory>/index.html Access it at this URL: file:///<output_report_directory>/index.html
Report created: <output_report_directory>/index.html Access it at this URL: file:///<output_report_directory>/index.html
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,按 Ctrl 并单击
index.html
文件的路径。
6.2. 分析报告部分 复制链接链接已复制到粘贴板!
以下是应用程序分析完成后可用的分析报告部分。这些部分包含有关应用程序迁移的更多详情。
您只能查看适用于当前应用的报告。
Insights 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
部分 | 描述 |
---|---|
Dashboard | 事件和总故事点的概述,按类别排序。 |
问题 | 简要概述所有问题及其需要注意的详细信息。 |
依赖项 | 应用程序内找到的所有 Java 打包依赖关系。 |
技术 | 所有按功能分组的嵌入式库。使用此报告显示每个应用程序中使用的技术。 |
Insights | 有关规则生成的违反信息,并为零。问题由常规规则生成,而字符串标签则由标记规则生成。字符串标签表示存在技术,但不显示代码位置。Insights 包含有关应用程序中使用的技术及其在代码中使用的技术信息。 Insights 不会影响迁移。例如,规则在代码中搜索已弃用的 API 使用量不会影响当前迁移,但在以后需要时可以跟踪和修复。 与问题不同,您不需要修复成功迁移的见解。它们由任何没有分配正工作值和类别的规则生成。它们可能含有消息和标签。 |
6.3. 查看分析问题和事件 复制链接链接已复制到粘贴板!
分析完成后,您可以查看应用程序迁移过程中可能出现的问题。每个问题都包含一个规则匹配多次的文件列表。这些文件包括问题中的所有事件。每个事件都包含此问题的详细说明以及如何解决这个问题。
流程
- 打开分析报告。如需更多信息,请参阅 访问分析报告。
- 单击 issues。
- 点击您要检查的问题。
- 在 File 选项卡下,点文件以显示触发此问题的事件或事件。
通过将鼠标悬停在触发事件的行上显示事件信息,例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 7 章 使用 MTA 命令行界面执行转换 复制链接链接已复制到粘贴板!
您可以使用转换执行以下操作:
-
使用
transform openrewrite
命令转换 Java 应用源代码。 -
使用转换规则命令将 XML 规则转换为
YAML 规则
。
执行转换需要配置容器运行时。
7.1. 转换应用程序源代码 复制链接链接已复制到粘贴板!
要更新 Java 库或框架,如 javax
或 Spring Boot,您可以使用 transform openrewrite
命令转换 Java 应用源代码。openrewrite
子命令允许在源代码上运行 OpenRewrite
方法。
您只能使用单个目标来运行 转换覆盖
命令。
先决条件
- 已配置了容器运行时。
流程
显示可用的
OpenRewrite
方法:mta-cli transform openrewrite --list-targets
$ mta-cli transform openrewrite --list-targets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 转换应用程序源代码:
mta-cli transform openrewrite --input=<path_to_source_code> --target=<target_from_the_list>
$ mta-cli transform openrewrite --input=<path_to_source_code> --target=<target_from_the_list>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
-
检查目标应用源代码
diff
以查看转换。
7.2. 可用的 OpenRewrite recipes 复制链接链接已复制到粘贴板!
以下是可用于转换应用源代码的 OpenRewrite
方法。
迁移路径 | 用途 | rewrite.config 文件位置 | Active recipe |
---|---|---|---|
Java EE 到 Jakarta EE |
使用对等的
将 |
|
|
Java EE 到 Jakarta EE | 重命名 bootstrap 文件。 |
|
|
Java EE 到 Jakarta EE |
转换 |
|
|
Spring Boot 到 Quarkus |
在文件中替换 |
|
|
7.3. openrewrite 命令选项 复制链接链接已复制到粘贴板!
以下是您可以和 mta-cli 转换 openrewrite
命令一起使用的选项,以便根据您的需要调整命令行为。
选项 | 描述 |
---|---|
|
目标目标。默认值为 |
|
显示所有 |
| 应用源代码目录的路径。 |
| 列出所有可用的 OpenRewrite recipes。 |
| 自定义 Maven 设置文件的路径。 |
| 目标 OpenRewrite method。 |
|
日志级别。默认值为 |
| 不要清理临时资源。 |
7.4. 将 XML 规则转换为 YAML 规则 复制链接链接已复制到粘贴板!
您可以使用 mta-cli 转换 rules 命令将 MTA XML 规则转换为
YAML 规则。要转换规则,analyzer-
lsprules
子命令使用 windup-shim
工具。
mta-cli analyze
转换也会自动将 XML 规则转换为 YAML 规则。
analyzer-lsp
是评估语言提供程序规则的工具,并确定规则匹配。
先决条件
- 已安装并运行 Podman 工具。
- 如果您的系统在断开连接的环境中,您可以将 Podman 镜像复制到断开连接的设备的文件系统中,并将这些镜像上传到本地 Podman。
流程
- 将 XML 规则转换为 YAML 规则:
mta-cli transform rules --input=<path_to_xml_rules> --output=<path_to_output_directory>
$ mta-cli transform rules --input=<path_to_xml_rules> --output=<path_to_output_directory>
7.5. rules 命令选项 复制链接链接已复制到粘贴板!
以下是您可以和 mta-cli 转换规则
命令一起使用的选项,以根据您的需要调整命令行为。
选项 | 描述 |
---|---|
|
显示所有 |
| XML 规则文件或目录的路径。 |
| 输出目录的路径。 |
|
日志级别。默认值为 |
第 8 章 为应用程序部署生成平台资产 复制链接链接已复制到粘贴板!
从 MTA 版本 7.3.0 开始,您可以在无容器模式中使用 发现和
生成
命令,以自动生成在 OpenShift Container Platform 中部署 Cloud Foundry (CF)应用程序所需的清单:
-
使用
discover
命令,以 CF 应用程序清单中 YAML 格式生成发现清单。发现清单会保留 CF 清单中找到的规格,该规格定义元数据、运行时和平台配置。 -
使用
generate
命令,通过发现清单为 OCP 部署生成部署清单。部署清单通过使用模板引擎(如 Helm)生成,它将发现清单转换为 Kubernetes 原生格式。您还可以使用此命令生成非 Kubernetes 清单,如 Dockerfile 或配置文件。
为应用程序部署生成平台资产只是一个技术预览功能。Developer Preview(开发人员预览)功能不被红帽支持,其功能可能并不完善且不是生产环境就绪。不要将开发人员预览功能用于生产环境或业务关键型工作负载。开发人员预览功能可以在之前可能地包含在红帽产品产品中提前访问即将推出的产品功能,使客户能够测试功能并在开发过程中提供反馈。这些功能可能没有任何文档,可能会随时被更改或删除,测试也会受到限制。红帽可能会提供在没有关联 SLA 的情况下提交对开发人员预览功能的反馈。
生成部署资产的好处
生成部署资产有以下优点:
- 生成 Kubernetes 和非 Kubernetes 部署清单。
- 使用熟悉的模板引擎(如 Helm)生成部署清单,它们被广泛用于 Kubernetes 部署。
- 在使用 Helm 模板准备部署清单时遵循 Kubernetes 最佳实践。
8.1. 生成发现清单 复制链接链接已复制到粘贴板!
您可以使用 discover
命令为 Cloud Foundry (CF)应用程序生成发现清单。发现清单会保留 CF 清单中找到的配置,如应用程序属性、资源分配、环境变量和服务绑定。
先决条件
- 您有 Cloud Foundry (v3)作为源平台。
- 您有一个 OpenShift Container Platform 作为目标平台。
- 已安装 MTA CLI 版本 7.3.0。
- 您有一个 CF 应用程序清单,作为 YAML 文件。
流程
-
打开终端应用程序,再进入 <
MTA_HOME>/
目录。 列出发现过程支持的平台:
mta-cli discover --list-platforms
$ mta-cli discover --list-platforms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 CF 应用程序生成发现清单作为输出文件:
mta-cli discover cloud-foundry \ --input <path_to_application-manifest> \ --output <path_to_discovery-manifest>\
$ mta-cli discover cloud-foundry \ --input <path_to_application-manifest> \ --output <path_to_discovery-manifest>\
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2. 生成部署清单 复制链接链接已复制到粘贴板!
您可以使用 generate
命令为 Cloud Foundry (CF)应用程序自动生成 Red Hat OpenShift Container Platform 部署清单。根据您提供的 Helm 模板,命令会为应用程序部署生成清单,如 ConfigMap 和非 Kubernetes 清单,如 Dockerfile。
先决条件
- 您有 Cloud Foundry (v3)作为源平台。
- 您有一个 OpenShift Container Platform 作为目标平台。
- 已安装 MTA CLI 版本 7.3.0。
- 您生成了一个发现清单。
- 已使用 OCP 部署所需的配置创建了 Helm 模板。
流程
-
打开终端应用程序,再进入 <
MTA_HOME>/
目录。 将部署清单生成为输出文件:
mta-cli generate helm --chart-dir helm_sample \ --input <path_to_discovery-manifest> \ --output-dir <location_of_deployment_manifest> \
$ mta-cli generate helm --chart-dir helm_sample \ --input <path_to_discovery-manifest> \ --output-dir <location_of_deployment_manifest> \
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 ConfigMap:
mta-cli cd <location_of_deployment_manifest> \ $ cat configmap.yaml cat configmap.yaml cat Dockerfile
$ mta-cli cd <location_of_deployment_manifest> \ $ cat configmap.yaml $ cat Dockerfile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Dockerfile:
mta-cli cd <location_of_deployment_manifest> \ $ cat Dockerfile cat Dockerfile
$ mta-cli cd <location_of_deployment_manifest> \ $ cat Dockerfile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. discover 和 generate 命令选项 复制链接链接已复制到粘贴板!
您可以将以下选项与 discover
或 generate
命令一起使用,以根据您的需要调整命令行为。
命令 | 选项 | 描述 |
---|---|---|
|
| 显示不同命令参数的详细信息。 |
| 列出发现过程支持的平台。 | |
| 探索云发现应用程序。 | |
| 指定 < app-manifest-name& gt; .yaml 文件的位置来发现应用程序配置。 | |
| 指定保存 < discovery-manifest-name>.yaml 文件的位置。 | |
|
| 显示不同命令参数的详细信息。 |
| 使用 Helm 模板生成部署清单。 | |
| 指定包含 Helm Chart 的目录。 | |
| 指定 < discovery-manifest-name> .yaml 文件的位置来生成部署清单。 | |
| 仅生成非 Kubernetes 模板,如 Dockerfile。 | |
| 指定保存部署清单的位置。 | |
| 使用从 CLI 输入的键值对覆盖发现清单中的属性值。 |
8.4. 资产生成示例 复制链接链接已复制到粘贴板!
以下是生成 Cloud Foundry (CF) Node.js 应用程序的发现和部署清单的示例。
在本例中,使用以下文件和目录:
-
CF Node.js 应用程序清单名称:
cf-nodejs-app.yaml
-
Discovery manifest name:
discover.yaml
-
应用程序 Helm Chart 的位置:
helm_sample
- 部署清单:ConfigMap 和 Dockerfile
-
部署清单的输出位置:
newDir
假设 cf-nodejs-app.yaml
位于与 MTA CLI 二进制文件相同的目录中。如果 CF 应用清单位置不同,您也可以输入清单的位置路径 作为输入
。
先决条件
- 已安装 MTA CLI 7.3.0。
- 您有一个 CF 应用程序清单,作为 YAML 文件。
- 已使用 OCP 部署所需的配置创建了 Helm 模板。
流程
-
打开终端应用程序,再进入 <
MTA_HOME>/
目录。 验证 CF Node.js 应用程序清单的内容:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成发现清单:
mta-cli discover cloud-foundry \ --input cf-nodejs-app.yaml \ --output discover.yaml \
$ mta-cli discover cloud-foundry \ --input cf-nodejs-app.yaml \ --output discover.yaml \
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证发现清单的内容:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
discover.yaml
文件在newDir
目录中生成部署清单:mta-cli generate helm \ --chart-dir helm_sample \ --input discover.yaml --output-dir newDir
$ mta-cli generate helm \ --chart-dir helm_sample \ --input discover.yaml --output-dir newDir
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
newDir
目录中 Dockerfile 的内容:cat ./newDir/Dockerfile FROM busybox:latest RUN echo "Hello cf-nodejs!"
$ cat ./newDir/Dockerfile FROM busybox:latest RUN echo "Hello cf-nodejs!"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
newDir
目录中 ConfigMap 的内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 ConfigMap 中,将
名称改为
nodejs-app
,并将INSTANCES
替换为2:
mta-cli generate helm \ --chart-dir helm_sample \ --input discover.yaml --set name="nodejs-app" \ --set instances=2 \ --output-dir newDir \
$ mta-cli generate helm \ --chart-dir helm_sample \ --input discover.yaml --set name="nodejs-app" \ --set instances=2 \ --output-dir newDir \
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 再次检查 ConfigMap 的内容:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 9 章 MTA CLI 已知问题 复制链接链接已复制到粘贴板!
本节在 MTA CLI 中提供了突出显示的已知问题。
Microsoft Windows 中的 Podman 的限制
CLI 构建并提供对 Microsoft Windows 的支持。
但是,当运行基于 Red Hat Enterprise Linux 9 (RHEL9)或 Universal Base Image 9 (UBI9)的容器镜像时,启动容器时可以返回以下错误:
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2
造成此错误的原因是 Red Hat Enterprise Linux 9 或 Universal Base Image 9 容器镜像必须在支持 x86-64-v2
的 CPU 架构上运行。
如需了解更多详细信息,请参阅 (运行 Red Hat Enterprise Linux 9 (RHEL)或 Universal Base Image (UBI) 9 容器镜像会失败,并显示 "Fatal glibc 错误:CPU 不支持 x86-64-v2")。
CLI 正确运行容器运行时。但是,不支持不同的容器运行时配置。
虽然不支持,但您可以使用 Docker 而不是 Podman 运行 CLI,这将解决这个问题。
要达到此目的,您需要将 CONTAINER_TOOL
路径替换为 Docker 的路径。
例如,如果您遇到这个问题,而不是发出:
CONTAINER_TOOL=/usr/local/bin/docker mta-cli analyze
CONTAINER_TOOL=/usr/local/bin/docker mta-cli analyze
将 CONTAINER_TOOL
替换为 Docker 的路径:
<Docker Root Dir>=/usr/local/bin/docker mta-cli analyze
<Docker Root Dir>=/usr/local/bin/docker mta-cli analyze
虽然这不受支持,但您可以探索 CLI,同时准备升级硬件或移至支持 x86_64-v2
的硬件。
附录 A. 参考材料 复制链接链接已复制到粘贴板!
以下是在使用 Migration Toolkit for Applications (MTA) CLI 时可能用到的信息。
A.1. 支持的技术标签 复制链接链接已复制到粘贴板!
MTA 7.3.2 支持以下技术标签:
- 0MQ Client
- 3scale
- Acegi Security
- AcrIS Security
- ActiveMQ library
- Airframe
- Airlift Log Manager
- AKKA JTA
- Akka Testkit
- Amazon SQS Client
- AMQP Client
- Anakia
- AngularFaces
- ANTLR StringTemplate
- AOP Alliance
- Apache Accumulo Client
- Apache Aries
- Apache Commons JCS
- Apache Commons Validator
- Apache Flume
- Apache Geronimo
- Apache Hadoop
- Apache HBase Client
- Apache Ignite
- Apache Karaf
- Apache Mahout
- Apache Meecrowave JTA
- Apache Sirona JTA
- Apache Synapse
- Apache Tapestry
- Apiman
- Applet
- Arquillian
- AspectJ
- Atomikos JTA
- Avalon Logkit
- Axion Driver
- Axis
- Axis2
- BabbageFaces
- Bean Validation
- BeanInject
- Blaze
- Blitz4j
- BootsFaces
- Bouncy Castle
- ButterFaces
- Cache API
- Cactus
- Camel
- Camel Messaging Client
- Camunda
- Cassandra Client
- CDI
- Cfg Engine
- Chunk Templates
- Cloudera
- Coherence
- 常见注解
- Composite Logging
- Composite Logging JCL
- Concordion
- CSS
- Cucumber
- Dagger
- DbUnit
- Demoiselle JTA
- Derby Driver
- Drools
- DVSL
- Dynacache
- EAR Deployment
- Easy Rules
- EasyMock
- Eclipse RCP
- EclipseLink
- Ehcache
- EJB
- EJB XML
- Elasticsearch
- Entity Bean
- EtlUnit
- Eureka
- Everit JTA
- Evo JTA
- Feign
- File system Logging
- FormLayoutMaker
- FreeMarker
- Geronimo JTA
- GFC Logging
- GIN
- GlassFish JTA
- Google Guice
- Grails
- Grapht DI
- Guava Testing
- GWT
- H2 Driver
- Hamcrest
- Handlebars
- HavaRunner
- Hazelcast
- Hdiv
- 休眠
- Hibernate Cfg
- Hibernate Mapping
- Hibernate OGM
- HighFaces
- HornetQ Client
- HSQLDB Driver
- HTTP Client
- HttpUnit
- ICEfaces
- Ickenham
- Ignite JTA
- Ikasan
- iLog
- Infinispan
- Injekt for Kotlin
- Iroh
- Istio
- Jamon
- Jasypt
- Java EE Batch
- Java EE Batch API
- Java EE JACC
- Java EE JAXB
- Java EE JAXR
- Java EE JSON-P
- Java Transaction API
- JavaFX
- JavaScript
- javax Inject
- JAX-RS
- JAX-WS
- JayWire
- JBehave
- JBoss Cache
- JBoss EJB XML
- JBoss logging
- JBoss Transactions
- JBoss Web XML
- JBossMQ Client
- JBPM
- JCA
- Jcabi Log
- JCache
- JCunit
- JDBC
- JDBC datasources
- JDBC XA datasources
- Jersey
- Jetbrick Template
- Jetty
- JFreeChart
- JFunk
- JGoodies
- JMock
- JMockit
- JMS Connection Factory
- JMS Queue
- JMS Topic
- JMustache
- JNA
- JNI
- JNLP
- JPA entities
- JPA Matchers
- JPA named queries
- JPA XML
- JSecurity
- JSF
- JSF Page
- JSilver
- JSON-B
- JSP Page
- JSTL
- JTA
- Jukito
- JUnit
- Ka DI
- Keyczar
- Kibana
- KLogger
- Kodein
- Kotlin Logging
- KouInject
- KumuluzEE JTA
- LevelDB Client
- Liferay
- LiferayFaces
- Lift JTA
- Log.io
- Log4J
- Log4s
- Logback
- Logging Utils
- Logstash
- Lumberjack
- Macros
- Magicgrouplayout
- Management EJB
- MapR
- MckoiSQLDB Driver
- Memcached
- Message (MDB)
- Micro DI
- Micrometer
- Microsoft SQL Driver
- MiGLayout
- MinLog
- Mixer
- Mockito
- MongoDB Client
- Monolog
- Morphia
- MRules
- Mule
- Mule Functional Test Framework
- MultithreadedTC
- Mycontainer JTA
- MyFaces
- MySQL Driver
- Narayana Arjuna
- Needle
- Neo4j
- NLOG4J
- Nuxeo JTA/JCA
- OACC
- OAUTH
- OCPsoft Logging Utils
- OmniFaces
- OpenFaces
- OpenPojo
- OpenSAML
- OpenWS
- OPS4J Pax Logging Service
- Oracle ADF
- Oracle DB Driver
- Oracle Forms
- Orion EJB XML
- Orion Web XML
- Oscache
- OTR4J
- OW2 JTA
- OW2 Log Util
- OWASP CSRF Guard
- OWASP ESAPI
- Peaberry
- Pega
- Persistence units
- Petals EIP
- PicketBox
- PicketLink
- PicoContainer
- Play
- Play Test
- Plexus Container
- Polyforms DI
- Portlet
- PostgreSQL Driver
- PowerMock
- PrimeFaces
- Properties
- Qpid Client
- RabbitMQ Client
- RandomizedTesting Runner
- Resource Adapter
- REST Assured
- Restito
- RichFaces
- RMI
- RocketMQ Client
- Rythm Template Engine
- SAML
- Santuario
- Scalate
- Scaldi
- Scribe
- Seam
- Security Realm
- ServiceMix
- Servlet
- ShiftOne
- Shiro
- Silk DI
- SLF4J
- Snippetory Template Engine
- SNMP4J
- Socket handler logging
- Spark
- Specsy
- Spock
- Spring
- Spring Batch
- Spring Boot
- Spring Boot Actuator
- Spring Boot Cache
- Spring Boot Flo
- Spring Cloud Config
- Spring Cloud Function
- Spring Data
- Spring Data JPA
- Spring DI
- Spring Integration
- Spring JMX
- Spring Messaging Client
- Spring MVC
- Spring Properties
- Spring Scheduled
- Spring Security
- Spring Shell
- Spring Test
- Spring Transactions
- Spring Web
- SQLite Driver
- SSL
- Standard Widget Toolkit (SWT)
- Stateful (SFSB)
- Stateless (SLSB)
- Sticky Configured
- Stripes
- Struts
- SubCut
- Swagger
- SwarmCache
- Swing
- SwitchYard
- Syringe
- Talend ESB
- Teiid
- TensorFlow
- Test Interface
- TestNG
- Thymeleaf
- TieFaces
- tinylog
- Tomcat
- Tornado Inject
- Trimou
- Trund JGuard
- Twirl
- Twitter Util Logging
- UberFire
- Unirest
- Unitils
- Vaadin
- Velocity
- Vlad
- Water Template Engine
- Web Services Metadata
- Web Session
- Web XML File
- WebLogic Web XML
- Webmacro
- WebSocket
- WebSphere EJB
- WebSphere EJB Ext
- WebSphere Web XML
- WebSphere WS Binding
- WebSphere WS Extension
- Weka
- Weld
- WF Core JTA
- Wicket
- Winter
- WSDL
- WSO2
- WSS4J
- XACML
- XFire
- XMLUnit
- Zbus Client
- Zipkin
A.2. 规则故事点 复制链接链接已复制到粘贴板!
故事点 是敏捷软件开发中常用的抽象指标,用于估算实施功能或更改所需的工作量水平。
应用的 Migration Toolkit for Applications 使用故事点来代表迁移特定应用程序构造所需的工作程度,以及整个应用程序。它不一定转换为 man-hours,但该值必须在任务间保持一致。
A.2.1. 工作量估算指南 复制链接链接已复制到粘贴板!
以下是估算规则所需工作量时,使用的一般准则 MTA。
努力级别 | 故事点 | 描述 |
---|---|---|
信息 | 0 | 迁移过程中具有非常低或没有优先级的信息。 |
微小 | 1 | 迁移是一个微小的变化或一个简单的库交换,没有或有最小的 API 更改。 |
复杂 | 3 | 迁移任务所需的更改比较复杂,但有一个已包括在文档中的解决方案。 |
重新设计 | 5 | 迁移任务需要重新设计或完整的库更改,并有显著的 API 更改。 |
架构重组 | 7 | 迁移会需要组件或子系统的完全的架构重组。 |
Unknown | 13 | 迁移解决方案并非已知的,可能需要进行彻底的重写。 |
A.2.2. 迁移任务类别 复制链接链接已复制到粘贴板!
除了工作 程度 外,您还可以对迁移任务 进行分类,以指明任务的严重性。下列类别用于对问题进行分组,以帮助确定迁移的工作量。
- 必需
- 必须成功完成该任务才能成功迁移。如果没有进行任何更改,则生成的应用不会成功构建或运行。例如,替换在目标平台中不支持的专有 API。
- 选填
- 如果没有完成迁移任务,应用程序应该可以正常工作,但结果可能不是最佳。如果迁移时没有进行任何更改,建议在迁移完成后尽快按计划设置。
- Potential
- 应在迁移过程中检查该任务,但没有足够的详细信息来确定任务是否成功完成。当没有直接兼容类型时,这将迁移第三方专有类型。
- 信息
- 该任务会包括告知您存在某些文件。可能需要将它们检查或修改为现代化工作的一部分,但通常不需要进行更改。
附录 B. 对 MTA 项目做出贡献 复制链接链接已复制到粘贴板!
为了帮助应用程序的 Migration Toolkit for Applications 包括大多数应用程序结构和服务器配置,您可以使用以下项目帮助:
- 发送电子邮件到 jboss-migration-feedback@redhat.com,并告知我们哪些 MTA 迁移规则必须涵盖的内容。
- 提供示例应用程序来测试迁移规则。
识别迁移可能很难迁移的应用程序组件和问题区域:
- 编写问题迁移区域的简短描述。
- 编写简短概述,了解如何解决问题迁移区域。
- 在应用程序上尝试 Migration Toolkit for Applications。确保报告您符合的任何问题。
- 在应用程序上尝试 Migration Toolkit for Applications。确保报告您满足的任何问题。MTA 使用 JIRA 作为其问题跟踪系统。如果您遇到执行 MTA 的问题,请提交 JIRA 问题。
对应用程序规则存储库的 Migration Toolkit 贡献:
- 编写 Migration Toolkit for Applications 规则以识别或自动迁移过程。
为新规则创建一个测试。
如需更多信息,请参阅规则开发指南。
贡献项目源代码:
- 创建核心规则。
- 提高 MTA 性能或效率。