2.2. 运行 CLI
您可以针对您的应用程序运行 MTR。
流程
-
打开一个终端,进入到
<MTR_HOME>/bin/目录。 执行
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$ ./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.apacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
--input:要评估的应用程序。 -
--output:所生成的报告的输出目录。 -
--source:应用程序迁移的源技术。 -
--target:应用程序迁移的目标技术。 -
--packages:要评估的软件包。强烈建议您使用这个参数提高性能。
-
- 访问报告。
2.2.1. MTR 命令示例 复制链接链接已复制到粘贴板!
在应用程序存档中运行 MTR
以下命令分析 jee-example-app-1.0.0.ear 示例 EAR 存档从 JBoss EAP 5 迁移到 JBoss EAP 7 的 com.acme 和 org.apache 软件包:
<MTR_HOME>/bin/windup-cli \
$ <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/ \
$ <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.acme 和 org.apache 软件包。它还评估了云就绪情况:
<MTR_HOME>/windup-cli --input /path/to/jee-example-app-1.0.0.ear \
$ <MTR_HOME>/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>
$ <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]
$ <MTR_HOME>/bin/windup-cli [TAB]
启用 Bash 完成
要为当前 shell 启用 Bash 完成,请执行以下命令:
source <MTR_HOME>/bash-completion/windup-cli
$ source <MTR_HOME>/bash-completion/windup-cli
启用持久性 Bash 完成
以下命令允许 Bash 完成在重启后保留:
要在系统重启后为特定用户启用 Bash 完成,请在该用户的
~/.bashrc文件中包括以下行:source <MTR_HOME>/bash-completion/windup-cli
source <MTR_HOME>/bash-completion/windup-cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要为系统重启后所有用户启用 Bash 完成,请以 root 用户身份将运行时 CLI 的 Migration Toolkit for Runtimes CLI completion 文件复制到
/etc/bash_completion.d/目录中。cp <MTR_HOME>/bash-completion/windup-cli /etc/bash_completion.d/
# cp <MTR_HOME>/bash-completion/windup-cli /etc/bash_completion.d/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.3. 访问 MTR 帮助 复制链接链接已复制到粘贴板!
要查看 windup-cli 命令可用参数的完整列表,请打开终端,进入 <MTR_HOME> 目录,并执行以下命令:
<MTR_HOME>/bin/windup-cli --help
$ <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。
流程
运行
windup-cli,指定方法名称、配置文件的路径和应用程序:./windup-cli --openrewrite --input </path/to/source/project> \ "-Drewrite.configLocation=<path/to/rewrite.yaml>" \ "-DactiveRecipes=<recipe_name>" --goal dryRun
$ ./windup-cli --openrewrite --input </path/to/source/project> \ "-Drewrite.configLocation=<path/to/rewrite.yaml>" \ "-DactiveRecipes=<recipe_name>" --goal dryRunCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
"-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.JavaxInjectToJakartaInject和org.jboss.windup.JavaxEjbToJakartaEjb",为"-DactiveRecipes=<recipes=<recipe name>"输入以下内容 :"-DactiveRecipes=org.jboss.windup.JavaxInjectToJakartaInject, \ org.jboss.windup.JavaxEjbToJakartaEjb""-DactiveRecipes=org.jboss.windup.JavaxInjectToJakartaInject, \ org.jboss.windup.JavaxEjbToJakartaEjb"Copy to Clipboard Copied! Toggle word wrap Toggle overflow --goal:可选:要运行的 OpenRewrite Maven 目标。-
dryRun:该脚本返回提议的更改列表。忽略"Run 'mvn rewrite:run' to apply the recipes"信息。 -
run: 脚本应用更改。
-
-
使用
--goal run运行windup-cli以应用方法:./windup-cli --openrewrite --input </path/to/source/project> \ "-Drewrite.configLocation=<path/to/rewrite.yaml>" \ "-DactiveRecipes=<recipe_name>" --goal run
$ ./windup-cli --openrewrite --input </path/to/source/project> \ "-Drewrite.configLocation=<path/to/rewrite.yaml>" \ "-DactiveRecipes=<recipe_name>" --goal runCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.4.1. 可用的 OpenRewrite recipes 复制链接链接已复制到粘贴板!
| 迁移路径 | 用途 | rewrite.configLocation | activeRecipes |
|---|---|---|---|
| Java EE 到 Jakarta EE |
使用对等的
将 |
|
|
| Java EE 到 Jakarta EE | 重命名 bootstrap 文件 |
|
|
| Java EE 到 Jakarta EE |
转换 |
|
|
| Spring Boot 到 Quarkus |
在文件中替换 |
|
|