2.2. CLI の実行

アプリケーションに対して MTA を実行できます。

手順

  1. ターミナルを開き、<MTA_HOME>/bin/ ディレクトリーに移動します。
  2. Windows の場合は windup-cli スクリプトまたは 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. MTA コマンドの例

アプリケーションアーカイブでの MTA の実行

次のコマンドは、JBoss EAP 5 から JBoss EAP 7 に移行するための サンプル EAR アーカイブ jee-example-app-1.0.0.earcom.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 の実行

次のコマンドは、JBoss EAP 6 に移行するための seam-booking-5.2 サンプルソースコードの 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
cloud-readiness ルールの実行

次のコマンドは、JBoss EAP 7 に移行するためのサンプル EAR アーカイブ jee-example-app-1.0.0.earcom.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 デコンパイラーを上書きするには、コマンドラインで -Dwindup.decompiler 引数を渡します。たとえば、Procyon デコンパイル機能を使用する場合は、以下の構文を使用します。

$ <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]
bash 補完の有効化

現在のシェルで bash 補完を有効にするには、以下のコマンドを実行します。

$ source <MTA_HOME>/bash-completion/windup-cli
永続的な bash 補完の有効化

以下のコマンドを使用すると、再起動後も bash 補完が維持されます。

  • システムを再起動しても特定のユーザーの bash 補完を有効にするには、そのユーザーの ~/.bashrc ファイルに以下の行を追加します。

    source <MTA_HOME>/bash-completion/windup-cli
  • システムの再起動後すべてのユーザーの bash 補完を有効にするには、root ユーザーで Migration Toolkit for Applications CLI Bash 補完ファイルを /etc/bash_completion.d/ ディレクトリーにコピーします。

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

2.2.3. MTA ヘルプへのアクセス

windup-cli コマンドで利用可能な引数の完全な一覧を表示するには、ターミナルを開き、<MTA_HOME> ディレクトリーに移動して、以下のコマンドを実行します。

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

2.2.4. OpenRewrite レシピの使用

重要

OpenRewrite レシピのサポートはテクノロジープレビュー機能としてのみ提供されます。テクノロジープレビュー機能は、Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。

MTA CLI で OpenRewrite レシピを使用すると、Java アプリケーションのソースコードをリファクタリングできます。

たとえば、OpenRewrite レシピの 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& gt;" : OpenRewrite recipe を指定します (例: org.jboss.windup.JavaxToJakarta)。
    • --input: リファクタリングするアプリケーションを指定します。アプリケーションは、Maven Project Object Model (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& gt;" : OpenRewrite recipe を指定します (例: org.jboss.windup.JavaxToJakarta)。

      activeRecipes パラメーターでそれぞれを指定すると、複数のレシピを含めることができます。たとえば、レシピ org.jboss.windup.JavaxInjectToJakartaInjectorg.jboss.windup.JavaxEjbToJakartaEjb" を含めるには、"-DactiveRecipes=<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 レシピ

表2.1 利用可能な OpenRewrite レシピ

移行パス目的rewrite.configLocationactiveRecipes

Java EE から Jakarta EE

javax パッケージのインポートを同等の jakarta パッケージに置き換える

pom.xml ファイル内で宣言された javax アーティファクトを jakarta と同等のものに置き換える

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

org.jboss.windup.JavaxToJakarta

Java EE から Jakarta EE

ブートストラップファイルの名前を変更する

<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

application*.properties に一致するファイル内の spring.jpa.hibernate.ddl-auto プロパティーを置き換える

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

org.jboss.windup.sb-quarkus.Properties