7.2. Red Hat Fuse アプリケーションへのパッチ適用
patch-maven-plugin の目的は、Red Hat Fuse BOM にある依存関係のバージョンを、アプリケーションに適用するパッチのパッチメタデータに指定されたバージョンに更新することです。
手順
以下の手順では、アプリケーションにパッチを適用する方法を説明します。
patch-maven-plugin
をプロジェクトのpom.xml
ファイルに追加します。patch-maven-plugin
のバージョンは、Fuse BOM のバージョンと同じである必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn clean deploy
、mvn validate
、またはmvn dependency:tree
コマンドの 1 つを実行すると、プラグインはプロジェクトモジュールを検索して、Red Hat Fuse BOM のいずれかが使用されているかどうかを確認します。以下の 2 つのみがサポートされる BOM とみなされます。-
org.jboss.redhat-fuse:fuse-karaf-bom
: Fuse Karaf BOM の場合 -
org.jboss.redhat-fuse:fuse-springboot-bom
: Fuse Spring Boot BOM の場合
-
上記の BOM がいずれも見つからない場合は、プラグインによって以下のメッセージが表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Fuse BOM が両方が見つかった場合は、
patch-maven-plugin
は以下の警告により停止します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow patch-maven-plugin
は以下の Maven メタデータ値のいずれかを取得しようと試みます。-
Fuse Karaf BOM を使用するプロジェクトの場合は、
org.jboss.redhat-fuse/fuse-karaf-patch-metadata/maven-metadata.xml
が解決されています。これは、org.jboss.redhat-fuse:fuse-karaf-patch-metadata:RELEASE
のアーティファクトのメタデータです。 Fuse Spring Boot BOM プロジェクトを使用するプロジェクトでは、
org.jboss.redhat-fuse/fuse-springboot-patch-metadata/maven-metadata.xml
が解決されています。これは、org.jboss.redhat-fuse:fuse-springboot-patch-metadata:RELEASE
のアーティファクトのメタデータです。Maven によって生成されたメタデータの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Fuse Karaf BOM を使用するプロジェクトの場合は、
-
patch-maven-plugin
はメタデータを解析し、現在のプロジェクトに適用可能なバージョンを選択します。これは、バージョン 7.8.xxx の Fuse BOM を使用する Maven プロジェクトでのみ可能です。バージョン範囲 7.8 および 7.9 以降と一致するメタデータのみが適用可能で、メタデータの最新バージョンのみが取得されます。 patch-maven-plugin
は、前の手順で見つかったgroupId
、artifactId
、およびversion
によって特定されたパッチメタデータをダウンロードする際に使用されるリモート Maven リポジトリーのリストを収集します。これらの Maven リポジトリーは、アクティブなプロファイルのプロジェクトの<repositories>
要素にリストされているもので、settings.xml
ファイルからのリポジトリーもリストされています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 任意で、オフラインリポジトリーを使用する場合は、
-Dpatch
オプションを使用して、jboss-fuse/redhat-fuse
プロジェクトのfuse-karaf/fuse-karaf-patch-repository
モジュールまたはfuse-springboot/fuse-springboot-patch-repository
モジュールによって生成される ZIP ファイルを指定できます。これらの ZIP ファイルの内部構造は、Maven リポジトリーの構造と同じです。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow メタデータがリモートリポジトリー、ローカルリポジトリー、または ZIP ファイルからであるかどうかに関わらず、
patch-maven-plugin
によって分析されます。フェッチされたメタデータには CVE のリストが含まれ、各 CVE には、影響を受ける Maven アーティファクトのリスト (glob パターンおよびバージョン範囲で指定) と、指定の CVE の修正が含まれるバージョンがあります。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最後に、現在のプロジェクトの管理された依存関係に繰り返し処理が行われるときに、パッチメタデータに指定された修正リストが参照されます。一致するこれらの依存関係 (および管理された依存関係) は、固定バージョンに変更になります。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
パッチのスキップ
特定のパッチをプロジェクトに適用したくない場合、patch-maven-plugin
は skip
オプションを提供します。すでに patch-maven-plugin
をプロジェクトの pom.xml
ファイルに追加済みで、バージョンを変更したくない場合は、以下のいずれかの方法を使用してパッチをスキップできます。
-
以下のように、プロジェクトの
pom.xml
ファイルに skip オプションを追加します。
-
または、以下のように
mvn
コマンドの実行時に-DskipPatch
オプションを使用します。
上記の出力にあるように、patch-maven-plugin
は呼び出されず、パッチはアプリケーションに適用されません。