CLI 指南


Migration Toolkit for Applications 7.2

了解如何使用 Migration Toolkit for Applications CLI 迁移应用程序。

Red Hat Customer Content Services

摘要

本指南论述了如何使用 Migration Toolkit for Applications CLI 来简化 Java 应用程序的迁移。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

第 1 章 简介

1.1. 关于 CLI 指南

本指南适用于希望使用 Migration Toolkit for Applications (MTA)迁移 Java 应用程序、.NET 应用程序或其他组件的工程师、顾问和其他组件。在 MTA 7.1 及更高版本中,您可以使用 MTA 分析使用 Java 以外的语言编写的应用程序。要对使用 Java 以外的语言编写的应用程序运行分析,请添加自定义规则集,且不指定目标语言。本指南介绍了如何安装和运行 CLI,查看生成的报告,并利用额外的功能。

重要

.NET 迁移只是一个技术预览功能。Developer Preview(开发人员预览)功能不被红帽支持,其功能可能并不完善且不是生产环境就绪。不要将开发人员预览功能用于生产环境或业务关键型工作负载。开发人员预览功能可以在之前可能地包含在红帽产品产品中提前访问即将推出的产品功能,使客户能够测试功能并在开发过程中提供反馈。这些功能可能没有任何文档,可能会随时被更改或删除,测试也会受到限制。红帽可能会提供在没有关联 SLA 的情况下提交对开发人员预览功能的反馈。

重要

分析使用 Java 以外的语言编写的应用程序只是一个技术预览功能。Developer Preview(开发人员预览)功能不被红帽支持,其功能可能并不完善且不是生产环境就绪。不要将开发人员预览功能用于生产环境或业务关键型工作负载。开发人员预览功能可以在之前可能地包含在红帽产品产品中提前访问即将推出的产品功能,使客户能够测试功能并在开发过程中提供反馈。这些功能可能没有任何文档,可能会随时被更改或删除,测试也会受到限制。红帽可能会提供在没有关联 SLA 的情况下提交对开发人员预览功能的反馈。

1.2. 关于 Migration Toolkit for Applications

什么是 Migration Toolkit for Applications?

Migration Toolkit for Applications (MTA) 在 Red Hat OpenShift 的混合云环境中加速大规模应用程序现代化的过程。此解决方案会考虑整个迁移过程的详细情况,包括产品组合和应用程序级别的信息:库存、评估、分析和管理应用程序,以便更快地通过用户界面迁移到 OpenShift。

在 MTA 7.1 及更高版本中,当您将应用程序添加到应用程序清单中时,MTA 会自动创建并执行语言和技术发现任务。语言发现标识了应用中使用的编程语言。技术发现可识别技术,如企业 Java Bean (EJB)、Spring 等。然后,每个任务会为应用程序分配适当的标签,从而减少了手动标记应用程序的时间和工作量。

MTA 使用大量默认问题作为评估应用程序的基础,或者您可以创建自己的自定义问题,使您能够估算准备容器化应用程序所需的难度、时间和其他资源。您可以使用评估结果作为与利益相关者进行的讨论基础,以确定哪些应用程序可以被容器化,哪些需要大量的准备工作,哪些不适用于容器化。

MTA 会根据一个或多个规则集来对应用程序进行分析,并找出应用程序的哪些部分需要进行修改才可以对其进行现代化。

MTA 检查应用程序工件,包括项目源目录和应用程序存档,然后生成 HTML 报告突出显示需要更改的区域。

Migration Toolkit for Applications 如何简化迁移?

Migration Toolkit for Applications 会查找常见资源和在迁移应用程序时的已知问题。它为应用程序使用的技术提供了高级视图。

MTA 生成详细的报告,评估迁移或现代化路径。此报告可帮助您估算大型项目所需的工作量,并减少涉及的工作。

1.2.1. 支持的 Migration Toolkit for Applications 迁移路径

Migration Toolkit for Applications (MTA)支持以下迁移:

  • 从第三方企业应用服务器(如 Oracle WebLogic Server)迁移到 JBoss Enterprise Application Platform (JBoss EAP)。
  • 升级到最新版本的 JBoss EAP.
  • 从仅 Windows 的 .NET 4.5+ Framework 迁移到跨平台 .NET 8.0。(开发者预览)

MTA 提供了一组全面的规则,用于评估应用程序以在 Red Hat OpenShift Container Platform (RHOCP) 上进行容器化和部署。您可以运行 MTA 分析来评估您的应用程序是否适合迁移到多个目标平台。

表 1.1. 支持的 Java 迁移路径:源平台 && Target 平台
源平台 TOKEN迁移到 JBoss EAP 7 和 8OpenShift (云就绪)OpenJDK 11、17 和 21Jakarta EE 9Camel 3 和 4Red Hat Runtimes 中的 Spring BootQuarkusOpen 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)
  1. .NET 迁移路径:源平台 generate Target platform (开发者预览)
源平台 TOKENOpenShift (云就绪)迁移到 .NET 8.0

.NET Framework 4.5+(仅限 Windows)

有关用例和迁移路径的更多信息,请参阅适用于开发人员网页的 MTA

1.3. MTA CLI

CLI 是 Migration Toolkit for Applications 的 Migration Toolkit for Applications 中的命令行工具,可用于对应用程序的迁移和现代化工作进行评估和优先级。它提供了大量报告,突出显示分析而无需使用其他工具。CLI 包括广泛的自定义选项。通过使用 CLI,您可以调整 MTA 分析选项或与外部自动化工具集成。

第 2 章 安装和运行 CLI

2.1. 安装 CLI

您可以使用 downloadable .zip 文件在 Linux、Windows 或 macOS 操作系统上安装 CLI。

重要

从 MTA 7.2.0 开始,您可以在无容器模式下运行 Java 应用程序的应用程序分析。

默认情况下会设置无容器模式,并在满足所有要求时自动使用。如需更多信息,请参阅 运行无容器 CLI

但是,如果您要使用 Java 以外的语言分析应用程序,或者使用 转换命令,您仍需要使用容器。

先决条件

  • registry.redhat.io 的 Red Hat Container Registry 身份验证。红帽从需要身份验证的 registry.redhat.io 中分发容器镜像。如需了解更多详细信息,请参阅 Red Hat Container Registry 身份验证

2.1.1. 安装 CLI .zip 文件

流程

  1. 进入到 MTA Download 页面,并下载特定于操作系统的 CLI 文件或 src 文件:

    • mta-7.2.0-cli-linux.zip
    • mta-7.2.0-cli-macos.zip
    • mta-7.2.0-cli-windows.zip
    • mta-7.2.0-cli-src.zip
  2. .zip 文件提取到您选择的目录。.zip 文件提取一个名为 mta-cli 的二进制文件。

    在本指南中遇到 <MTA_HOME> 时,将其替换为 MTA 安装的实际路径。

2.1.2. 使用 Podman 安装 CLI

您可以使用 podman pull 安装 CLI。

先决条件

  • registry.redhat.io 的 Red Hat Container Registry 身份验证。红帽从需要身份验证的 registry.redhat.io 中分发容器镜像。如需了解更多详细信息,请参阅 Red Hat Container Registry 身份验证
  • 必须安装 podman。
Podman

Podman 是一个无守护进程的、开源的、Linux 原生工具,旨在使使用开放容器项目(OCI)容器和容器镜像轻松查找、运行、构建、共享和部署应用程序。Podman 为已使用 Docker Container Engine 的任何人提供了一个熟悉的命令行界面(CLI)。有关安装和使用 Podman 的更多信息,请参阅 Podman 安装说明

流程

  1. 运行以下命令,使用 Podman 向 registry.redhat.io 进行身份验证:

    $ podman login registry.redhat.io

    输入用户名和密码:

    Username: <username>
    Password: <***********>
  2. 运行以下命令复制二进制 PATH 以启用系统范围的使用:

    $ podman cp $(podman create registry.redhat.com/mta-toolkit/mta-mta-cli-rhel9:{ProductVersion}):/usr/local/bin/mta-cli ./
    警告

    虽然可以使用 Podman 进行安装,但下载和安装 .zip 文件是首选的安装。

2.1.3. 安装 CLI 以用于 Windows 上的 Docker (开发者预览)

您可以安装 CLI 以用于 Windows 上的 Docker。在将使用 .NET 框架 4.5 或更高版本构建的应用程序迁移到跨平台 .NET 8.0 时,这是必要的方法。

先决条件

流程

  1. 使用管理员特权打开 PowerShell。
  2. 确保已安装并启用 Hyper-V:

    PS C:\Users\<your_user_name>> Enable-WindowsOptionalFeature -Online `
       -FeatureName Microsoft-Hyper-V-All
    PS C:\Users\<your_user_name>> Enable-WindowsOptionalFeature -Online `
       -FeatureName Containers
    注意

    您可能需要重启 Windows。

  3. 在 Windows 上安装 Docker 桌面。

    1. 双击 Docker_installed_Installer.exe 来运行安装程序。默认情况下,Docker Desktop 安装在 C:\Program Files\Docker\Docker
    2. 在 Configuration 页面中取消选择 Use WSL 2 而不是 Hyper-V 选项,以确保 Docker 将作为后端运行 Windows 容器,而不是 Linux 容器。
  4. 在 PowerShell 中,为 MTA 创建文件夹:

    PS C:\Users\<your_user_name>> mkdir C:\Users\<your_user_name>\MTA

    <your_user_name > 替换为您的主目录的用户名。

  5. mta-7.2.0-cli-windows.zip 文件提取到 MTA 文件夹:

    PS C:\Users\<your_user_name>> cd C:\Users\<your_user_name>\Downloads

    <your_user_name > 替换为您的主目录的用户名。

    PS C:\Users\<your_user_name>> Expand-Archive `
       -Path "{ProductShortNameLower}-{ProductVersion}-cli-windows.zip" `
       -DestinationPath "C:\Users\<your_user_name>\MTA"

    <your_user_name > 替换为您的主目录的用户名。

  6. 确保 Docker 正在运行 Windows 容器:

    PS C:\Users\<your_user_name>> docker version
    Client:
     Version:           27.0.3
     API version:       1.46
     Go version:        go1.21.11
     Git commit:        7d4bcd8
     Built:             Sat Jun 29 00:03:32 2024
     OS/Arch:           windows/amd64 1
     Context:           desktop-windows
    Server: Docker Desktop 4.32.0 (157355)
     Engine:
      Version:          27.0.3
      API version:      1.46 (minimum version 1.24)
      Go version:       go1.21.11
      Git commit:       662f78c
      Built:            Sat Jun 29 00:02:13 2024
      OS/Arch:          windows/amd64 2
      Experimental:     false
    1 2
    确保 OS/Arch 设置是 windows/amd64
  7. PODMAN_BIN 环境变量设置为使用 Docker:

    PS C:\Users\<your_user_name>> $env:PODMAN_BIN="C:\Windows\system32\docker.exe"
  8. DOTNET_PROVIDER_IMG 环境变量设置为使用上游 dotnet-external-provider

    PS C:\Users\<your_user_name>> $env:DOTNET_PROVIDER_IMG="quay.io/konveyor/dotnet-external-provider:v0.5.0"
  9. 设置 RUNNER_IMG 环境变量以使用上游镜像:

    PS C:\Users\<your_user_name>> $env:RUNNER_IMG="quay.io/konveyor/kantra:v0.5.0"

2.2. 在断开连接的环境中安装 MTA

从 MTA 7.2.0 开始,您可以在无容器模式下运行 Java 应用程序的应用程序分析。

重要

默认情况下会设置无容器模式,并在满足所有要求时自动使用。如需更多信息,请参阅 运行无容器 CLI

但是,如果您要使用 Java 以外的语言分析应用程序,或者使用 转换命令,您仍需要使用容器。

在连接的设备上,首先下载并保存 MTA 二进制文件。然后,下载并保存 Podman 镜像、MTA CLI 镜像和您需要的供应商镜像。

  • Migration Toolkit for Applications Red Hat Developer 页面下载 所需的 MTA CLI 二进制文件:

    • CLI for Linux x86_64
    • CLI for Linux aarch64
    • CLI for MacOS x86_64
    • MacOS aarch64 的 CLI
    • CLI for Windows x86_64
    • 用于 Windows aarch64 的 CLI
  • 在连接的设备上,下载并保存镜像。
  • 将二进制文件复制到断开连接的设备中。
  • 另外,您必须使用 Podman 保存并导入关联的容器镜像。

2.2.1. 下载 Podman 镜像

先决条件

  • 已安装 podman。如需更多信息,请参阅 Podman

流程

  1. 使用 Podman 向 registry.redhat.io 进行身份验证:

    $ podman login registry.redhat.io
  2. 输入您的用户名,然后输入 registry.redhat.io 的密码:

    Username: <registry_service_account_username>
    Password: <registry_service_account_password>

    您应该看到以下输出:

    Login Succeeded!
  3. 使用 Podman 从 registry 中拉取镜像:

    $ podman pull registry.redhat.io/mta/mta-cli-rhel9:7.1.0
  4. 使用 Podman 从 registry 中拉取所需的供应商镜像:

    1. 对于 Java,请运行:

      $ podman pull registry.redhat.io/mta/mta-java-external-provider-rhel9:7.1.0
    2. 对于 .NET,请运行:

      $ podman pull registry.redhat.io/mta/mta-dotnet-external-provider-rhel9:7.1.0
  5. 保存镜像:

    $ podman save <image> -o <my_image.image>
  6. .image 文件和二进制文件复制到 USB,或者直接复制到断开连接的设备的文件系统中。
  7. 在断开连接的设备上,运行

    $ podman load --input <my_image.image>

2.2.2. 已知的 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

造成此错误的原因是 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,这将解决这个问题。

要达到此目的,您需要将 PODMAN_BIN 路径替换为 Docker 的路径。

例如,如果您遇到这个问题,而不是发出:

PODMAN_BIN=/usr/local/bin/docker mta-cli analyze

您可以将 PODMAN_BIN 替换为 Docker 的路径:

<Docker Root Dir>=/usr/local/bin/docker mta-cli analyze

虽然这不受支持,但您可以探索 CLI,同时准备升级硬件或移至支持 x86_64-v2 的硬件。

2.3. 运行 CLI

根据您的场景,您可以使用 Migration Toolkit for Applications (MTA) CLI 使用以下方法运行分析:

  • 对单个应用程序运行分析。
  • 对多个应用程序运行分析:

重要

从 MTA 7.2.0 开始,您可以在无容器模式下运行应用程序分析。请注意,默认设置这个选项,并在满足所有要求时自动使用。如需更多信息,请参阅 运行无容器 CLI

2.3.1. 针对应用程序运行 MTA CLI

您可以针对应用程序运行 Migration Toolkit for Applications (MTA) CLI。

流程

  1. 打开一个终端,再进入 < MTA_HOME>/ 目录。
  2. 运行 mta-cli 脚本,或为 Windows 运行 mta-cli.exe,并指定适当的参数:

    $ ./mta-cli analyze --input <path_to_input> \
        --output <path_to_output> --source <source_name> --target <target_source> \
    • --input :要评估的应用程序。
    • --output :所生成的报告的输出目录。
    • --source :应用程序迁移的源技术。例如,weblogic
    • --target :应用程序迁移的目标技术。例如,eap8
  3. 访问报告。
2.3.1.1. MTA 命令示例
在应用程序存档中运行 MTA

以下命令分析名为 jee-example-app-1.0.0.ear 的 EAR 存档示例,用于从 JBoss EAP 5 迁移到 JBoss EAP 7:

$ <MTA_HOME>/mta-cli analyze \
    --input <path_to_jee-example-app-1.0.0.ear> \
    --output <path_to_report_output> --source eap5 --target eap7 \
在源代码上运行 MTA

以下命令分析一个称为 客户管理 (迁移到 JBoss EAP 8)的示例应用的源代码。

$ <MTA_HOME>/mta-cli analyze --mode source-only --input <path_to_customer-management>
--output <path_to_report_output> --target eap8
运行云就绪规则

以下命令分析名为 jee-example-app-1.0.0.ear 的 EAR 存档示例,以迁移到 JBoss EAP 7。它还评估云就绪的归档:

$ <MTA_HOME>/mta-cli analyze --input <path_to_jee-example-app-1.0.0.ear> \
    --output <path_to_report_output> \
    --target eap7

2.3.2. 针对多个应用程序运行 MTA CLI 并生成单个报告(开发者预览)

现在,您可以针对多个应用程序运行 Migration Toolkit for Applications (MTA) CLI,并生成组合报告。这可以节省时间,并让您更好地了解如何为迁移准备一组应用程序。

此功能目前是开发者技术预览功能。

重要

针对一个或多个应用程序运行 CLI 只是一个技术预览功能。Developer Preview(开发人员预览)功能不被红帽支持,其功能可能并不完善且不是生产环境就绪。不要将开发人员预览功能用于生产环境或业务关键型工作负载。开发人员预览功能可以在之前可能地包含在红帽产品产品中提前访问即将推出的产品功能,使客户能够测试功能并在开发过程中提供反馈。这些功能可能没有任何文档,可能会随时被更改或删除,测试也会受到限制。红帽可能会提供在没有关联 SLA 的情况下提交对开发人员预览功能的反馈。

流程

  1. 打开一个终端,再进入 < MTA_HOME>/ 目录。
  2. 运行 mta-cli 脚本或 Windows 的 mta-cli.exe,并指定适当的参数,为每个 analyze 命令输入一个输入,但为所有输入输入相同的输出目录。例如,要分析应用程序 A、B 和 C:

    1. 输入以下命令输入 A:

      $ ./mta-cli analyze --bulk --input=<path_to_input_A> --output=<path_to_output_ABC> --source <source_A> --target <target_A>
      • --input :要评估的应用程序。
      • --output :所生成的报告的输出目录。
      • --source :应用程序迁移的源技术。例如,weblogic
      • --target :应用程序迁移的目标技术。例如,eap8
    2. 输入以下命令输入 B :

      $ ./mta-cli analyze --bulk --input=<path_to_input_B> --output=<path_to_output_ABC>  --source <source_B> --target <target_B>
    3. 输入以下命令输入 C:

      $ ./mta-cli analyze --bulk --input=<path_to_input_C> --output=<path_to_output_ABC>  --source <source_C> --target <target_C>

      MTA 生成单个报告,列出在迁移应用程序前需要解决的所有问题。

  3. 访问报告。

2.3.3. 运行无容器 CLI

从 MTA 7.2.0 开始,您可以使用不需要安装容器运行时的 MTA CLI 对 Java 应用程序执行应用程序分析。

重要

在 MTA 7.2.0 及更新的版本中,无容器 CLI 是默认模式。要启用容器运行时使用,您必须将 --run-local 标志设置为 false

--run-local=false

先决条件

  • 在您的系统上已安装了 OpenJDK 版本 17 或更高版本。
  • 在您的系统上已安装了 Maven。
  • CLI 假设在 system 变量中正确注册了 mvn 二进制文件的路径。因此,请确保将 mvn 添加到以下变量中:

    • Windows 的路径。
    • 用于 Linux 和 macOS 的 PATH
  • 您已设置了 JAVA_HOME 环境变量。
  • 您已设置了 JVM_MAX_MEM 系统变量。

    注意

    如果没有设置 JVM_MAX_MEM,分析可能会挂起。

流程

  1. 将已安装的 MTA CLI .zip 文件移到 $PATH 中:

    $ mv <mta_cli_zip>/<os>-kantra /usr/bin
  2. 将要求移到 .kantra 目录中:

    $ mv $HOME/kantra.<os>.<arch> $HOME/.kantra
    注意

    CLI 可以通过将要求移到运行分析的目录中运行。在分析过程中,CLI 会首先检查此目录中的要求,如果它没有找到要求,它会在 $HOME/.kantra 目录中搜索它们。

  3. 可选:显示所有 mta-cli analyze 命令选项:

    mta-cli analyze --help
  4. 运行应用程序分析:

    $ mta-cli analyze --overwrite --input <path_to_input>  --output <path_to_output> --target <target_source>

    命令参数代表以下内容:

    • --overwrite :覆盖输出文件夹(如果存在)。
    • --input :要分析的应用程序。
    • --output :所生成的报告的输出目录。
    • --target :应用程序迁移的目标技术,如 eap8

2.3.4. 使用命令行执行分析

分析 支持使用 analyzer-lsp 工具运行源代码和二进制分析。analyzer-lsp 评估提供程序的规则,并确定规则匹配。

要在应用程序源代码上运行分析,请运行以下命令:

mta-cli analyze --input=<path_to_source_code> --output=<path_to_output_directory>

all 标记:

Analyze application source code

Usage:
  mta-cli analyze [flags]

Flags:

      --analyze-known-libraries           Analyze known open-source libraries.
      --context-lines (int)               Number of lines of source code to
                                          include in the output for each
                                          incident (default: `100`).
  -d, --dependency-folders (stringArray)  Directory for dependencies.
      --enable-default-rulesets           Run default rulesets with analysis
                                          (default: `true`).
  -h, --help                              Help for analyze.
      --http-proxy (string)               HTTP proxy string URL.
      --https-proxy (string)              HTTPS proxy string URL.
      --incident-selector (string)        An expression to select incidents
                                          based on custom variables.
                                          Example:
                                          !package=io.demo.config-utils
  -i, --input (string)                    Path to application source code or
                                          a binary.
      --jaeger-endpoint (string)          Jaeger endpoint to collect traces.
      --json-output                       Create analysis and dependency
                                          output as JSON.
      --list-sources                      List rules for available
                                          migration sources.
      --list-targets                      List rules for available
                                          migration targets.
  -l, --label-selector (string)           Run rules based on specified label
                                          selector expression.
      --maven-settings (string)           Path to the custom maven
                                          settings file to use.
      --overwrite                         Overwrite output directory.
      --skip-static-report                Do not generate the static report.
  -m, --mode (string)                     Analysis mode, must be one of
                                          `full` or `source-only`
                                          (default: `full`).
      --no-proxy (string)                 Proxy-excluded URLs
                                          (relevant only with proxy).
  -o, --output (string)                   Path to the directory for analysis
                                          output.
      --overwrite                         Overwrite output directory.
      --rules (stringArray)               Filename or directory containing
                                          rule files.
      --skip-static-report                Do not generate the static report.
  -s, --source (string)                   Source technology to consider
                                          for analysis.
                                          To specify multiple sources,
                                          repeat the parameter:
                                          `--source <source_1>
                                          --source <source_2>` etc.
  -t, --target (string)                   Target technology to consider
                                          for analysis.
                                          To specify multiple targets,
                                          repeat the parameter:
                                          `--target <target_1>
                                          --target <target_2>` etc.


Global Flags:
      --log-level uint32                  Log level (default: 4).
      --no-cleanup                        Do not cleanup temporary resources.
注意

上面的标记列表不包括-- bulk 标志,因为此标志仅作为开发者预览功能的一部分提供。此功能在 CLI 上分析多个应用程序时提供单一报告的支持

使用示例

  1. 获取要运行分析的示例应用程序。
  2. 列出可用的目标技术。

    mta-cli analyze --list-targets
  3. 使用指定的目标技术运行分析,如 云就绪

    mta-cli analyze --input=<path-to/example-applications/example-1> --output=<path-to-output-dir> --target=cloud-readiness
  4. 在您指定的输出路径中创建几个分析报告:

    $ ls ./output/ -1
    analysis.log
    dependencies.yaml
    dependency.log
    output.yaml
    static-report
    • output.yaml 是包含问题报告的文件。
    • static-report 包含静态 HTML 报告。
    • dependencies.yaml 包含依赖项报告。

2.3.5. 使用命令行执行转换

您可以使用转换执行以下操作:

  • 使用 transform openrewrite 命令转换 Java 应用源代码。
  • 使用转换规则命令将 XML 规则转换为 YAML 规则
重要

执行转换需要配置容器运行时。如需更多信息,请参阅使用 Podman 安装 CLI

Transform application source code or mta XML rules

Usage:
  mta-cli transform [flags]
  mta-cli transform [command]

Available Commands:
  openrewrite Transform application source code using OpenRewrite recipes
  rules       Convert XML rules to YAML

Flags:
  -h, --help   help for transform

Global Flags:
      --log-level uint32   log level (default 4)
      --no-cleanup         do not clean up temporary resources

Use "mta-cli transform [command] --help" for more information about a command.
2.3.5.1. OpenRewrite

openrewrite 子命令允许在源代码上运行 OpenRewrite 方法。

Transform application source code using OpenRewrite recipes

Usage:
  mta-cli transform openrewrite [flags]

Flags:
  -g, --goal string     target goal (default "dryRun")
  -h, --help            help for openrewrite
  -i, --input string    path to application source code directory
  -l, --list-targets    list all available OpenRewrite recipes
  -s, --maven-settings string   path to a custom maven settings file to use
  -t, --target string   target openrewrite recipe to use. Run --list-targets to get a list of packaged recipes.

Global Flags:
      --log-level uint32   log level (default 4)
      --no-cleanup         do not clean up temporary resources

要在应用程序源代码上运行 openrewrite,请运行以下命令:

mta-cli transform openrewrite --input=<path/to/source/code> --target=<exactly_one_target_from_the_list>

注意

您只能使用单个目标来运行 转换覆盖 命令。

2.3.5.2. 规则

您可以使用 transform 命令的 rules 子命令,将 mta XML 规则转换为 analyzer-lsp YAML 规则。要覆盖规则,rules 子命令使用 windup-shim 工具。

注意

analyzer-lsp 评估提供程序的规则,并确定规则匹配。

Convert XML rules to YAML

Usage:
  mta-cli transform rules [flags]

Flags:
  -h, --help                help for rules
  -i, --input stringArray   path to XML rule file(s) or directory
  -o, --output string       path to output directory

Global Flags:
      --log-level int   log level (default 5)

要在应用程序源代码上运行 转换规则,请运行以下命令:

mta-cli transform rules --input=<path/to/xmlrules> --output=<path/to/output/dir>

使用示例

  1. 获取示例应用程序来转换源代码。
  2. 查看可用的 OpenRewrite recipes。

    mta-cli transform openrewrite --list-targets
  3. 在示例应用程序上运行方法。

    mta-cli transform openrewrite --input=<path-to/jakartaee-duke> --target=jakarta-imports

    检查 jakartaee-duke 应用源代码 diff 以查看转换。

2.3.5.3. 可用的 OpenRewrite recipes
表 2.1. 可用的 OpenRewrite recipes
迁移路径用途rewrite.configLocationactiveRecipes

Java EE 到 Jakarta EE

使用对等的 jakarta 软件包替换 javax 软件包导入

pom.xml 文件中声明的 javax 工件替换为对等的 jakarta

<MTA_HOME>/rules/openrewrite/jakarta \ /javax/imports/rewrite.yml

org.jboss.windup.JavaxToJakarta

Java EE 到 Jakarta EE

重命名 bootstrap 文件

<MTA_HOME>/rules/openrewrite/jakarta \ /javax/bootstrapping/rewrite.yml

org.jboss.windup.jakarta.javax. \ BootstrappingFiles

Java EE 到 Jakarta EE

转换 persistence.xml 配置

<MTA_HOME>/rules/openrewrite/jakarta \ /javax/xml/rewrite.yml

org.jboss.windup.javax-jakarta. \ PersistenceXML

Spring Boot 到 Quarkus

在文件中替换 spring.jpa.hibernate.ddl-auto 属性来匹配 application*.properties

<MTA_HOME>/rules/openrewrite/quarkus \ /springboot/properties/rewrite.yml

org.jboss.windup.sb-quarkus.Properties

2.4. 访问报告

当您运行 Migration Toolkit for Applications 时,会在您在命令行中使用 --output 参数指定的 <OUTPUT_REPORT_DIRECTORY> 中生成报告。

输出目录包含以下文件和子目录:

<OUTPUT_REPORT_DIRECTORY>/
├── index.html          // Landing page for the report
├── <EXPORT_FILE>.csv   // Optional export of data in CSV format
├── archives/           // Archives extracted from the application
├── mavenized/          // Optional Maven project structure
├── reports/            // Generated HTML reports
├── stats/              // Performance statistics

流程

  1. 从运行 MTA 后显示的输出中获取报告的 index.html 文件的路径:

    Report created: <OUTPUT_REPORT_DIRECTORY>/index.html
                  Access it at this URL: file:///<OUTPUT_REPORT_DIRECTORY>/index.html
  2. 使用浏览器打开 index.html 文件。

    此时会显示生成的报告。

2.5. 使用 CLI 分析多语言应用程序

从 MTA 7.1.0 开始,您可以在使用多种语言编写的应用程序上运行应用程序分析。您可以通过以下任一方式执行分析:

  • 选择支持的语言提供程序来运行分析。
  • 使用您自己的不支持的语言供应商覆盖现有的支持语言供应商,并为这个不支持的供应商运行分析。

2.5.1. 为所选支持的语言供应商分析多语言应用程序

当使用 Migration Toolkit for Applications (MTA) CLI 分析多语言应用程序时,您可以根据应用程序语言明确设置受支持的语言供应商,以运行分析。

先决条件

  • 您正在运行最新版本的 MTA CLI。

流程

  1. 列出分析支持的语言供应商:

    $ mta-cli analyze --list-providers
  2. 为所选语言供应商运行应用程序分析:

    $ mta-cli analyze --input <_path_to_the_source_repository_> --output <_path_to_the_output_directory_> --provider <_language_provider_> --rules <_path_to_custom_rules_>

    请注意,如果没有设置 the- provider 选项,分析可能会失败,因为它检测到不支持的供应商。只有在所有发现的供应商都被支持时,分析才会完成 without- provider

2.5.2. 为不支持的语言供应商分析多语言应用程序

当使用 Migration Toolkit for Applications (MTA) CLI 分析多语言应用程序时,您可以运行不支持的语言供应商的分析。要做到这一点,您必须使用自己的不支持的语言供应商覆盖现有的支持的语言供应商,使用 --override-provider-settings 选项。

重要

在覆盖支持的供应商前,您必须为不支持的语言供应商创建配置文件。

先决条件

  • 您已为不支持的语言供应商创建了配置文件。

流程

  • 使用不支持的供应商覆盖现有的支持语言供应商:

    $ mta-cli analyze --provider-override <path_to_configuration_file> --output=<path_to_the_output_directory> --rules <path_to_custom_rules>

第 3 章 查看报告

使用浏览器打开位于报告输出目录中的 index.html 文件。这将打开一个登录页面,其中列出了已处理的应用程序。每行包含故事点、事件数以及应用程序里遇到的技术的高级概述。

图 3.1. 应用程序列表

应用程序列表
注意

随着新规则添加到 MTA 时,事件和预计的故事点改变。测试此应用程序时,这里的值可能与您看到的值不同。

下表列出了可以从此主 MTA 登录页访问的所有报告和页面。点应用程序的名称 jee-example-app-1.0.0.ear 来查看应用程序报告。

页面如何访问

Application

点应用程序的名称。

技术报告

单击页面顶部的 Technologies 链接。

多个应用程序共享的存档

Archives shared by multiple applications 链接。请注意,只有在在多个应用程序间有共享存档时,此链接才可用。

规则提供程序执行概述

点页面底部的 Rule providers execution overview 链接。

请注意,如果应用程序与其他分析的应用程序共享存档,您会看到有多少故事点来自共享存档,以及此应用程序的独特数量。

图 3.2. 共享归档

共享归档

有关应用程序间共享的存档的信息,可在多个应用程序报告共享的归档中找到。

3.1. 应用程序报告

3.1.1. Dashboard

Application List 中的应用程序名称,从报告登录页面访问此报告。

控制面板提供整个应用程序迁移工作的概述。总结:

  • 事件和故事点按类别分类
  • 意外和故事点,按所推荐更改的工作量程度
  • 根据软件包的事件

图 3.3. Dashboard

Dashboard

顶部导航栏列出了包含关于迁移此应用程序的更多详情的各种报告。请注意,只有适用于当前应用程序的报告才会可用。

Report描述

问题

提供有关需要关注的所有问题的简要概述。

Insights

提供有关应用程序中使用的技术及其代码中使用的信息。但是,这些 Insights 不会影响迁移。

应用程序详情

提供了有关应用程序中找到的所有资源的详细信息,这些资源在迁移过程中可能需要注意。

技术

显示所有按功能分组的嵌入式库,允许您快速查看每个应用程序中使用的技术。

依赖项

显示应用程序内找到的所有 Java 打包依赖关系。

unparsable

显示 MTA 无法以预期格式解析的所有文件。例如,假定带有 .xml.wsdl 后缀的文件是 XML 文件。如果 XML 解析器失败,则会在此处报告问题,以及列出各个文件的位置。

远程服务

显示应用程序内找到的所有远程服务引用。

EJBs

包含应用程序中找到的 EJB 列表。

JBPM

包含分析过程中发现的所有 JBPM 相关资源。

JPA

包含有关应用程序中找到的所有 JPA 相关资源的详细信息。

Hibernate

包含有关应用程序中找到的所有 Hibernate 相关资源的详细信息。

服务器资源

在输入应用中显示所有服务器资源(如 JNDI 资源)。

Spring Beans

包含分析期间找到的 Spring Bean 列表。

硬编码的 IP 地址

提供应用程序中找到的所有硬编码 IP 地址的列表。

忽略的文件

列出应用程序中找到的文件(基于某些规则和 MTA 配置)没有被处理。如需更多信息,请参阅 --userIgnorePath 选项。

关于

描述最新版本的 MTA,并为进一步帮助提供有用的链接。

3.1.2. 问题报告

点 Problem 链接,从仪表板 访问 此报告。

此报告包括关于所选迁移路径引发的每一个问题的详细信息。遇到的每个问题都会提供以下信息:

  • 问题总结的标题。
  • 事件总数或问题所遇到的次数。
  • 规则故事点可以解决单个问题实例。
  • 解决问题的预期工作量。
  • 解决遇到的每个实例的总体故事点。这通过乘以每个事件的故事点数来计算得出的。

图 3.4. 问题报告

问题报告

通过单击标题可展开每个报告的问题来获取附加详情。提供了以下信息:

  • 发生事件的文件列表,以及各个文件中的事件数。如果文件是 Java 源文件,则点文件名会将您定向到对应的 Source 报告。
  • 有关此问题的详细描述。该描述概述了此问题,提供任何已知的解决方案,以及有关问题或解决方案的相关参考文档。
  • 向生成该问题的规则授权 显示 规则的直接链接。

图 3.5. 扩展的问题

在问题报告中展开的规则

默认情况下,问题按照四个类别排序。有关这些类别的信息,请访问请求类别。

3.1.3. Insights

重要

Insights 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

在以前的版本中,由带有零工作的规则生成的违反行为会在静态报告中被列为问题。现在,这被列出为一个见解。问题由常规规则生成,而字符串标签则通过标记规则生成。字符串标签表示存在技术,但不显示代码位置。通过引入 Insights,您可以看到应用程序中使用的技术及其代码中的用法。

例如,规则在代码中搜索已弃用的 API 使用量不会影响当前迁移,但在以后需要时可以跟踪和修复。

与问题不同,不需要修复 insights 来成功进行迁移。它们由任何未分配正工作值和类别的规则生成。它们可能含有消息和标签。

注意

如果适用或存在,则会自动生成 Insights。目前,当应用程序 aaylsis 使用 CLI 时,MTA 支持生成 Insights。

您可以在静态报告中的 Insights 选项卡下查看 Insights。

静态报告中的 Insights 标签页

示例:Insights 由带有未定义工作的标记规则生成的

- customVariables: []
  description: Embedded library - Apache Wicket
  labels:
  - konveyor.io/include=always
  links: []
  ruleID: mvc-01000
  tag:
  - Apache Wicket
  - Embedded library - Apache Wicket
  when:
    builtin.file:
      pattern: .*wicket.*\.jar

示例:使用零工作的非标记规则生成的 Insights

- category: potential
  customVariables: []
  description: RESTful Web Services @Context annotation has been deprecated
  effort: 0
  message: Future versions of this API will no longer support `@Context` and related
    types such as `ContextResolver`.
  ruleID: jakarta-ws-rs-00001
  when:
    java.referenced:
      location: ANNOTATION
      pattern: jakarta.ws.rs.core.Context

3.1.4. 应用程序详情报告

Application Details 链接从仪表板访问此报告。

该报告列出了案例点、软件包中的 Java 事件以及应用程序中找到的技术计数。接下来,显示迁移过程中生成的应用程序消息。最后,对过程中分析的每个存档都有此信息分类。

图 3.6. 应用程序详情报告

应用程序详情报告

展开 jee-example-app-1.0.0.ear/jee-example-services.jar 以检查故事点、Java 事件软件包以及此存档中找到的技术计数。此摘要以分配给其迁移的故事总数开始,然后表详细说明存档中每个文件所需的更改。该报告包含以下几列。

列名称描述

Name

正在分析的文件的名称。

技术

正在分析的文件的类型,例如 Decompiled Java FileProperties

问题

有关需要审核或更改的代码区域的警告。

故事点

迁移该文件所需的工作程度。

请注意,如果某个归档在应用程序中重复多次,它将仅在报告中列出一次,并会标记 [Included multiple times]

图 3.7. 应用程序中的重复归档

重复归档

在应用程序内重复归档的案例点仅计算该应用程序的总故事点数一次。

3.1.5. 技术报告

单击 Technologies 链接,从仪表板访问此报告。

报告在分析的应用程序中列出了按功能分组的技术。概述了应用程序中找到的技术,旨在帮助用户快速了解每个应用程序的用途。

下图显示了 jee-example-app 中使用的技术。

图 3.8. 应用程序中的技术

技术报告应用程序视图

3.1.6. 源报告

Source 报告会在发现它们的源文件上下文中显示迁移问题。

图 3.9. 源报告

源报告

3.2. 技术报告

单击 Technologies 链接,从报告登录页面访问此报告。

此报告提供了分析的应用程序所使用的技术的聚合列表,按功能分组。它展示了技术分布方式,通常在分析大量应用程序以对应用程序进行分组并确定模式后,通常会审查技术。它还显示每个应用程序的大小、库数和故事点数。

点击任意标头(如 Markup )以降序排列结果。再次选择同一标头将按顺序选择结果。当前选定的标头以粗体显示,方向箭头旁边表示排序的方向。

图 3.10. 跨多个应用程序使用的技术

跨多个应用程序使用的技术

第 4 章 优化 MTA 性能

MTA 性能取决于若干因素,包括硬件配置、应用程序中的文件数和类型、要评估的应用程序的大小和数量,以及应用程序是否包含源代码或编译的代码。例如,大于 10 MB 的文件可能需要大量时间进行处理。

一般情况下,MTA 会花费大约 40% 的工作时间处理类,40% 的工作时间执行规则,其他时间用于处理其他任务并生成报告。本节介绍如何可以提高 MTA 的性能。

4.1. 部署并运行应用程序

在升级硬件前首先尝试这些建议。

  • 如果可能,请针对源代码而不是存档运行 MTA。这消除了编译额外 JAR 和存档的需求。
  • 分析大型应用程序会增大 ulimit。有关如何为 Red Hat Enterprise Linux 执行此操作的说明,请参阅红帽知识库文章
  • 如果您可以使用一个比笔记本电脑或台式机器具有更好资源的服务器,您可能想考虑在该服务器上运行 MTA。

4.2. 升级硬件

如果上述应用程序和命令行建议无法提高性能,您可能需要升级硬件。

  • 如果您可以使用一个比笔记本电脑或台式机器具有更好资源的服务器,您可能想考虑在该服务器上运行 MTA。
  • 需要进行处理的大型应用程序有较大的内存要求。建议 8 GB RAM。这允许 JVM 使用 3 - 4 GB RAM。
  • 从单或双核升级到四核 CPU 处理器可提供更好的性能。
  • 磁盘空间和碎片可能会影响性能。一个快速磁盘,特别是固态驱动器 (SSD),超过 4 GB 的碎片整理磁盘空间应该会提高性能。

附录 A. 参考材料

A.1. 关于 MTA 命令行参数

以下是可用 MTA 命令行参数的详细描述。

注意

要在不提示的情况下运行 MTA 命令,例如从脚本执行时,您必须使用以下参数:

  • --overwrite
  • --input
  • --target

例 A.1. MTA CLI 参数

命令类型描述

--analyze-known-libraries

 

用于分析已知开源库的标志。

--bulk

 

用于批量运行多个分析命令的标志,这会导致组合静态报告。

--context-lines

整数

定义每个事件输出中包含的源代码行数的标志(默认值 :100)。

-d,--dependency-folders

字符串数组

依赖项目录的标志。

--enable-default-rulesets

布尔值

使用分析运行默认规则集的标记(默认为 true)。

-h,--help

 

输出分析帮助帮助的标记

--http-proxy

字符串

Hyper Text 传输协议(HTTP)代理字符串 URL 的标记

--https-proxy

字符串

Hypertext 传输协议安全(HTTPS)代理字符串 URL 的标记

--incident-selector

字符串

用于根据自定义变量选择事件的标记,如 !package=io.konveyor.demo.config-utils

-i,--input

字符串

指向应用程序源代码或二进制文件的路径的标志。如需了解更多详细信息,请参阅 指定输入

--jaeger-endpoint

字符串

用于收集 trace 的 jaeger 端点的标志。

--json-output

 

以 JSON 身份创建分析和依赖项输出的标志。

-l,--label-selector

字符串

基于指定的标签选择器表达式运行规则的标志。

--list-providers

 

用于列出可用的供应商的标志。

--list-sources

 

用于列出可用迁移源规则的标志。

--list-targets

 

列出可用迁移目标规则的标志。

--Maven-settings

string

要使用的自定义 Maven 设置文件的标记路径

-m,--mode

字符串

分析模式的标志,必须为 完整的,对于 和依赖项或者仅源 (默认 完整)。

--no-proxy

字符串

用于排除通过代理的 URL 的标记(仅与代理相关)

-o,--output

字符串

分析输出的目录的路径标志。如需了解更多详细信息,请参阅 指定输出目录

--override-provider-settings

字符串

用于覆盖供应商设置的标记。分析 pod 在主机网络上运行,且没有启动提供程序。

--overwrite

 

用于覆盖输出目录的标记。如果没有指定此参数,且存在 --output 目录,则会提示您选择是否覆盖内容。

--provider

字符串数组

指定要运行的供应商或供应商的标志。

--rules

字符串数组

指定包含规则文件的目录的标志。对附加规则使用多次,如-- rules --rules … .

--run-local

 

本地标志,用于在没有容器的情况下直接在本地系统上运行分析(用于 Java 和 Maven)

--skip-static-report

 

不生成静态报告的标记。

-S,--source

字符串数组

要考虑分析的源技术的标志。对其他源使用多次,如-- source --source … .如需了解更多详细信息 ,请参阅设置源技术

-t,--target

字符串数组

要考虑分析的目标技术的标记。对其他目标使用多次,如-- target --target …如需了解更多详细信息,请参阅 设置目标技术

A.1.1. 指定输入

到要分析的一个或多个应用程序的文件或目录的路径列表。此参数是必需的。

使用方法

--input <INPUT_ARCHIVE_OR_DIRECTORY> [...]

根据提供给 --input 参数提供的输入文件类型是否为文件或目录,它将根据提供的附加参数进行评估。

目录
  • --sourceMode :目录被评估为单个应用程序。
File
  • --sourceMode :文件作为压缩的项目进行评估。

A.1.2. 指定输出目录

指定输出 MTA 生成的报告信息的目录路径。

使用方法

--output <OUTPUT_REPORT_DIRECTORY>

  • 如果省略,则会在 <INPUT_ARCHIVE_OR_DIRECTORY>.report 目录中生成报告。
  • 如果存在输出目录,系统会提示您出现带有默认回答 N 的以下问题:

    Overwrite all contents of "/home/username/<OUTPUT_REPORT_DIRECTORY>" (anything already in the directory will be deleted)? [y,N]

但是,如果您指定 --overwrite 参数,则 MTA 将继续删除并重新创建 目录。如需更多信息,请参阅此参数的描述。

A.1.3. 设置源技术

要迁移的一个或多个源技术、服务器、平台或框架的空格分隔列表。您可以将此参数与- target 参数结合使用,以确定使用哪个规则集。使用 --listSourceTechnologies 参数列出所有可用的源。

使用方法

--source <SOURCE_1> <SOURCE_2>

--source 参数现在提供版本支持,它遵循 Maven 版本范围语法。这指示 MTA 仅运行与指定版本匹配的规则集,如-- source eap:5

警告

迁移到 JBoss EAP 时,请务必指定版本,如 eap:6。仅指定 eap 将针对所有版本的 JBoss EAP 运行规则集,包括与您的迁移路径无关。

有关相应 JBoss EAP 版本的 Migration Toolkit for Applications 简介,请参阅支持的迁移路径。https://access.redhat.com/documentation/zh-cn/migration_toolkit_for_applications/7.2/html-single/introduction_to_the_migration_toolkit_for_applications/index#migration_paths_getting-started-guide

A.1.4. 设置目标技术

要迁移到的一个或多个目标技术、服务器、平台或框架的空格分隔列表。您可以将此参数与- source 参数结合使用,以确定使用哪个规则集。如果没有指定这个选项,系统会提示您选择一个目标。使用 --listTargetTechnologies 参数列出所有可用的目标。

使用方法

--target <TARGET_1> <TARGET_2>

--target 参数现在提供版本支持,它遵循 Maven 版本范围语法。这指示 MTA 仅运行与指定版本匹配的规则集,如-- target eap:7

A.2. 支持的技术标签

MTA 7.2.0 支持以下技术标签:

  • 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
  • Mail
  • 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.3. 关于规则故事点

A.3.1. 什么是故事点?

故事点是敏捷软件开发中常用的抽象指标,用于估算实施功能或更改所需的工作量水平

应用的 Migration Toolkit for Applications 使用故事点来代表迁移特定应用程序构造所需的工作程度,以及整个应用程序。它不一定转换为“人-小时”,但该值在不同的任务间应保持一致。

A.3.2. 故事点如何在规则中估计

估算一个规则的故事点的工作量水平可能很棘手。以下是估算规则所需工作量时,使用的一般准则 MTA。

努力级别故事点描述

信息

0

迁移过程中具有非常低或没有优先级的信息。

微小

1

迁移是一个微小的变化或一个简单的库交换,没有或有最小的 API 更改。

复杂

3

迁移任务所需的更改比较复杂,但有一个已包括在文档中的解决方案。

重新设计

5

迁移任务需要重新设计或完整的库更改,并有显著的 API 更改。

架构重组

7

迁移会需要组件或子系统的完全的架构重组。

Unknown

13

迁移解决方案并非已知的,可能需要进行彻底的重写。

A.3.3. 任务类别

除了工作程度外,您还可以对迁移任务进行分类,以指明任务的严重性。下列类别用于对问题进行分组,以帮助确定迁移的工作量。

必需
必须成功完成该任务才能成功迁移。如果没有进行任何更改,则生成的应用不会成功构建或运行。例如,替换在目标平台中不支持的专有 API。
选填
如果没有完成迁移任务,应用程序应该可以正常工作,但结果可能不是最佳。如果迁移时没有进行任何更改,建议在迁移完成后尽快按计划设置。
Potential
应在迁移过程中检查该任务,但没有足够的详细信息来确定任务是否成功完成。当没有直接兼容类型时,这将迁移第三方专有类型。
信息
该任务会包括告知您存在某些文件。可能需要将它们检查或修改为现代化工作的一部分,但通常不需要进行更改。

有关分类任务的更多信息,请参阅使用自定义规则类别

A.4. 其它资源

A.4.1. 对项目做出贡献

为了帮助应用程序的 Migration Toolkit for Applications 包括大多数应用程序结构和服务器配置,您可以使用以下项目帮助:

  • 发送电子邮件到 jboss-migration-feedback@redhat.com,并告知我们哪些 MTA 迁移规则必须涵盖的内容。
  • 提供示例应用程序来测试迁移规则。
  • 识别迁移可能很难迁移的应用程序组件和问题区域:

    • 编写问题迁移区域的简短描述。
    • 编写简短概述,了解如何解决问题迁移区域。
  • 在应用程序上尝试 Migration Toolkit for Applications。确保报告您符合的任何问题。
  • 对应用程序规则存储库的 Migration Toolkit 贡献:

    • 编写 Migration Toolkit for Applications 规则以识别或自动迁移过程。
    • 为新规则创建一个测试。

    如需更多信息,请参阅规则开发指南

  • 贡献项目源代码:

    • 创建核心规则。
    • 提高 MTA 性能或效率。

任何级别的参与都非常感谢!

A.4.3. 报告问题

MTA 使用 JIRA 作为其问题跟踪系统。如果您遇到执行 MTA 的问题,请提交 JIRA 问题


更新于 2025-02-04

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.