2.2. 运行 CLI


您可以针对您的应用程序运行 MTR。

流程

  1. 打开一个终端,进入到 <MTR_HOME>/bin/ 目录。
  2. 执行 windup-cli 脚本,或为 Windows 执行 windup-cli.bat,并指定适当的参数:

    $ ./windup-cli --input /path/to/jee-example-app-1.0.0.ear \
        --output /path/to/output --source weblogic --target eap:6 \
        --packages com.acme org.apache
    • --input :要评估的应用程序。
    • --output :所生成的报告的输出目录。
    • --source :应用程序迁移的源技术。
    • --target :应用程序迁移的目标技术。
    • --packages :要评估的软件包。强烈建议您使用这个参数提高性能。
  3. 访问报告。

2.2.1. MTR 命令示例

在应用程序存档中运行 MTR

以下命令分析 jee-example-app-1.0.0.ear 示例 EAR 存档从 JBoss EAP 5 迁移到 JBoss EAP 7 的 com.acmeorg.apache 软件包:

$ <MTR_HOME>/bin/windup-cli \
    --input /path/to/jee-example-app-1.0.0.ear \
    --output /path/to/report-output/ --source eap:5 --target eap:7 \
    --packages com.acme org.apache
在源代码中运行 MTR

以下命令分析 seam-booking-5.2 示例源代码中的 org.jboss.seam 软件包,以迁移到 JBoss EAP 6。

$ <MTR_HOME>/bin/windup-cli --sourceMode --input /path/to/seam-booking-5.2/ \
    --output /path/to/report-output/ --target eap:6 --packages org.jboss.seam
运行云就绪规则

以下命令分析 jee-example-app-1.0.0.ear 示例 EAR 归档(用于迁移到 JBoss EAP 7)的 com.acmeorg.apache 软件包。它还评估了云就绪情况:

$ <MTR_HOME>/bin/windup-cli --input /path/to/jee-example-app-1.0.0.ear \
    --output /path/to/report-output/ \
    --target eap:7 --target cloud-readiness --packages com.acme org.apache
覆盖 MTR 属性

要覆盖默认的 Fernflower decompiler,请在命令行上传递 -Dwindup.decompiler 参数。例如,要使用 Procyon decompiler,请使用以下语法:

$ <MTR_HOME>/bin/windup-cli -Dwindup.decompiler=procyon \
    --input <INPUT_ARCHIVE_OR_DIRECTORY> --output <OUTPUT_REPORT_DIRECTORY> \
    --target <TARGET_TECHNOLOGY> --packages <PACKAGE_1> <PACKAGE_2>

2.2.2. MTR CLI Bash 补全

MTR CLI 提供了一个选项,可为 Linux 系统启用 Bash 补全功能,允许在输入命令时按 Tab 键自动完成 MTR 命令行参数。例如,在启用 Bash 完成时,输入以下内容会显示可用参数的列表:

$ <MTR_HOME>/bin/windup-cli [TAB]
启用 Bash 完成

要为当前 shell 启用 Bash 完成,请执行以下命令:

$ source <MTR_HOME>/bash-completion/windup-cli
启用持久性 Bash 完成

以下命令允许 Bash 完成在重启后保留:

  • 要在系统重启后为特定用户启用 Bash 完成,请在该用户的 ~/.bashrc 文件中包括以下行:

    source <MTR_HOME>/bash-completion/windup-cli
  • 要为系统重启后所有用户启用 Bash 完成,请以 root 用户身份将运行时 CLI 的 Migration Toolkit for Runtimes CLI completion 文件复制到 /etc/bash_completion.d/ 目录中。

    # cp <MTR_HOME>/bash-completion/windup-cli /etc/bash_completion.d/

2.2.3. 访问 MTR 帮助

要查看 windup-cli 命令可用参数的完整列表,请打开终端,进入 <MTR_HOME> 目录,并执行以下命令:

$ <MTR_HOME>/bin/windup-cli --help

2.2.4. 使用 OpenRewrite methods

重要

OpenRewrite method 支持仅作为技术预览提供。技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

如需有关技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。

您可以通过 MTR CLI 使用 OpenRewrite 方法来重构 Java 应用程序的源代码。

例如,OpenRewrite method org.jboss.windup.JavaxToJakarta 将导入的 javax 软件包重命名为其对于的 jakarta

流程

  1. 运行 windup-cli,指定方法名称、配置文件的路径和应用程序:

    $ ./windup-cli --openrewrite --input </path/to/source/project> \
      "-Drewrite.configLocation=<path/to/rewrite.yaml>"  \
      "-DactiveRecipes=<recipe_name>" --goal dryRun
    • "-DactiveRecipes=<recipe name>": 指定 OpenRewrite recipe,例如 org.jboss.windup.JavaxToJakarta
    • --input :指定要重构的应用程序。该应用必须是包含 Maven 项目对象模型(POM) XML 文件 pom.xml 的源代码项目的顶部。
    • -Drewrite.configLocation=<path/to/rewrite.yaml> : 要使用的 rewrite.yaml 配置文件的位置。提供的 rewrite.yaml 配置文件位于 <MTR_HOME>/rules/openrewrite 子文件夹中,例如 " -Drewrite.configLocation=<MTR_HOME>/rules/openrewrite/jakarta/javax/imports/rewrite.yaml"
    • "-DactiveRecipes=<recipe name>": 指定 OpenRewrite recipe,例如 org.jboss.windup.JavaxToJakarta

      您可以通过在 activeRecipes 参数中指定每个方法包含多个方法。例如,要包含方法 org.jboss.windup.JavaxInjectToJakartaInjectorg.jboss.windup.JavaxEjbToJakartaEjb",为 "-DactiveRecipes=<recipes=<recipe name>" 输入以下内容 :

        "-DactiveRecipes=org.jboss.windup.JavaxInjectToJakartaInject, \
          org.jboss.windup.JavaxEjbToJakartaEjb"
    • --goal :可选:要运行的 OpenRewrite Maven 目标。

      • dryRun :该脚本返回提议的更改列表。忽略 "Run 'mvn rewrite:run' to apply the recipes" 信息。
      • run : 脚本应用更改。
  2. 使用 --goal run 运行 windup-cli 以应用方法:

    $ ./windup-cli --openrewrite --input </path/to/source/project> \
      "-Drewrite.configLocation=<path/to/rewrite.yaml>"  \
      "-DactiveRecipes=<recipe_name>" --goal run

2.2.4.1. 可用的 OpenRewrite recipes

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

Java EE 到 Jakarta EE

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

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

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

org.jboss.windup.JavaxToJakarta

Java EE 到 Jakarta EE

重命名 bootstrap 文件

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

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

Java EE 到 Jakarta EE

转换 persistence.xml 配置

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

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

Spring Boot 到 Quarkus

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

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

org.jboss.windup.sb-quarkus.Properties

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.