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
-
--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 \ --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.acme
和 org.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
。
流程
运行
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.JavaxInjectToJakartaInject
和org.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
: 脚本应用更改。
-
-
使用
--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
迁移路径 | 目的 | rewrite.configLocation | activeRecipes |
---|---|---|---|
Java EE 到 Jakarta EE |
使用对等的
将 |
|
|
Java EE 到 Jakarta EE | 重命名 bootstrap 文件 |
|
|
Java EE 到 Jakarta EE |
转换 |
|
|
Spring Boot 到 Quarkus |
在文件中替换 |
|
|