1.7. Red Hat build of Apache Camel for Spring Boot へのパッチ適用
新しい patch-maven-plugin メカニズムを使用すると、Red Hat Red Hat build of Apache Camel for Spring Boot アプリケーションにパッチを適用できます。このメカニズムを使用すると、異なる Red Hat アプリケーション BOM によって提供される個々のバージョン (camel-spring-boot-bom など) を変更できます。
patch-maven-plugin の目的は、Camel on Spring Boot BOM にリストされている依存関係のバージョンを、アプリケーションに適用するパッチのメタデータで指定されているバージョンに更新することです。
patch-maven-plugin は次の操作を実行します。
- 現在の Red Hat アプリケーション BOM に関連するパッチのメタデータを取得します。
- BOM からインポートされた <dependencyManagement> にバージョンの変更を適用します。
patch-maven-plugin は、メタデータを取得すると、プラグインが宣言されたプロジェクトの管理対象および直接の依存関係すべてに対して繰り返し処理を行い、CVE/パッチのメタデータを使用して、一致する依存関係バージョンを置き換えます。バージョンが置き換えられると、Maven ビルドが続行され、標準の Maven プロジェクトのステージに進みます。
手順
以下の手順では、アプリケーションにパッチを適用する方法を説明します。
patch-maven-pluginをプロジェクトのpom.xmlファイルに追加します。patch-maven-pluginのバージョンは、Camel on Spring Boot BOM のバージョンと同じである必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn clean apply、mvn validate、またはmvn dependency:treeコマンドのいずれかを実行すると、プラグインはプロジェクトモジュールを検索して、モジュールが Red Hat Red Hat build of Apache Camel for Spring Boot BOM を使用しているかどうかを確認します。サポートされている BOM は次のとおりです。-
com.redhat.camel.springboot.platform:camel-spring-boot-bom: Red Hat build of Apache Camel for Spring Boot BOM 用
-
プラグインは、上記の BOM を検出できない場合、次のメッセージを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 正しい BOM が使用されている場合、パッチのメタデータが検出されますが、パッチは検出されません。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow patch-maven-pluginは、この Maven メタデータを取得しようとします。Camel Spring Boot BOM を含むプロジェクトの場合、
com.redhat.camel.springboot.platform:redhat-camel-spring-boot-patch-metadata/maven-metadata.xmlが解決されます。この XML データは、com.redhat.camel.springboot.platform:redhat-camel-spring-boot-patch-metadata:RELEASE座標を持つアーティファクトのメタデータです。Maven によって生成されたメタデータの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
patch-maven-pluginは、メタデータを解析して、現在のプロジェクトに適用するバージョンを選択します。このアクションは特定のバージョンの Camel on Spring Boot BOM を使用する Maven プロジェクトのみで可能です。バージョン範囲以降に一致するメタデータのみが適用され、最新バージョンのメタデータのみが取得されます。 patch-maven-pluginは、前の手順で見つかったgroupId、artifactId、およびversionによって識別されるパッチのメタデータをダウンロードするためのリモート Maven リポジトリーのリストを収集します。これらの Maven リポジトリーは、アクティブなプロファイル内のプロジェクトの<repositories>要素にリストされ、またsettings.xmlファイルのリポジトリーにもリストされます。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 は呼び出されず、パッチはアプリケーションに適用されません。