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
dependency:tree-
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 和版本中找到的groupId
、artifactId
和版本
标识时使用的远程 Maven 存储库列表。这些 Maven 存储库是活跃配置集的项目 <repositories>
元素中列出的 Maven 存储库,以及来自settings.xml
文件中的存储库。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,如果要使用离线存储库,您可以使用
-Dpatch
选项指定由fuse-karaf/fuse-karaf-patch-repository
或fuse-springboot/fuse-springboot-patch
模块生成的 ZIP 文件。这些 ZIP 文件与 Maven 存储库结构具有相同的内部结构。例如,-
repositoryCopy 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
文件中,并且您不想更改版本,您可以使用以下任一方法跳过补丁。
-
将 skip 选项添加到项目的
pom.xml
文件中,如下所示:
-
运行
mvn
命令时或使用-DskipPatch
选项,如下所示:
如上述输出中所示,patch-maven-plugin
没有调用,这会导致补丁不会应用到应用。