2.2. 运行 CLI
您可以针对您的应用程序运行 MTA。
流程
-
打开一个终端,进入到
<MTA_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.apache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
--input
:要评估的应用程序。 -
--output
:所生成的报告的输出目录。 -
--source
:应用程序迁移的源技术。 -
--target
:应用程序迁移的目标技术。 -
--packages
:要评估的软件包。强烈建议您使用这个参数提高性能。
-
- 访问报告。
2.2.1. MTA 命令示例 复制链接链接已复制到粘贴板!
在应用程序存档中运行 MTA
以下命令分析 jee-example-app-1.0.0.ear 示例 EAR 存档从 JBoss EAP 5 迁移到 JBoss EAP 7 的 com.acme
和 org.apache
软件包:
<MTA_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
$ <MTA_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
在源代码上运行 MTA
以下命令分析 seam-booking-5.2 示例源代码中的 org.jboss.seam
软件包,以迁移到 JBoss EAP 6。
<MTA_HOME>/bin/windup-cli --sourceMode --input /path/to/seam-booking-5.2/ \ --output /path/to/report-output/ --target eap:6 --packages org.jboss.seam
$ <MTA_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
软件包。它还评估了云就绪情况:
<MTA_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
$ <MTA_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
覆盖 MTA 属性
要覆盖默认的 Fernflower decompiler,请在命令行上传递 -Dwindup.decompiler
参数。例如,要使用 Procyon decompiler,请使用以下语法:
<MTA_HOME>/bin/windup-cli -Dwindup.decompiler=procyon \ --input <INPUT_ARCHIVE_OR_DIRECTORY> --output <OUTPUT_REPORT_DIRECTORY> \ --target <TARGET_TECHNOLOGY> --packages <PACKAGE_1> <PACKAGE_2>
$ <MTA_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. MTA CLI Bash 完成 复制链接链接已复制到粘贴板!
MTA CLI 提供了为 Linux 系统启用 Bash 补全选项,允许在输入命令时按 Tab 键自动完成 MTA 命令行参数。例如,在启用 Bash 完成时,输入以下内容会显示可用参数的列表:
<MTA_HOME>/bin/windup-cli [TAB]
$ <MTA_HOME>/bin/windup-cli [TAB]
启用 Bash 完成
要为当前 shell 启用 Bash 完成,请执行以下命令:
source <MTA_HOME>/bash-completion/windup-cli
$ source <MTA_HOME>/bash-completion/windup-cli
启用持久性 Bash 完成
以下命令允许 Bash 完成在重启后保留:
要在系统重启后为特定用户启用 Bash 完成,请在该用户的
~/.bashrc
文件中包括以下行:source <MTA_HOME>/bash-completion/windup-cli
source <MTA_HOME>/bash-completion/windup-cli
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要为系统重启后所有用户启用 Bash 完成,请以 root 用户身份将 Migration Toolkit for Applications CLI Bash completion 文件复制到
/etc/bash_completion.d/
目录中。cp <MTA_HOME>/bash-completion/windup-cli /etc/bash_completion.d/
# cp <MTA_HOME>/bash-completion/windup-cli /etc/bash_completion.d/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.3. 访问 MTA 帮助 复制链接链接已复制到粘贴板!
要查看 windup-cli
命令可用参数的完整列表,请打开终端,进入 <MTA_HOME>
目录,并执行以下命令:
<MTA_HOME>/bin/windup-cli --help
$ <MTA_HOME>/bin/windup-cli --help
2.2.4. 使用 OpenRewrite methods 复制链接链接已复制到粘贴板!
OpenRewrite method 支持仅作为技术预览提供。技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
如需有关技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。
您可以通过 MTA 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 dryRun
Copy 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
配置文件位于<MTA_HOME>/rules/openrewrite
子目录中,例如" -Drewrite.configLocation=<MTA_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 run
Copy 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 |
在文件中替换 |
|
|