1.7. 将补丁应用到红帽构建的 Apache Camel for Spring Boot
使用新的 patch-maven-plugin
机制,您可以将补丁应用到红帽构建的 Apache Camel for Spring Boot 应用程序。此机制允许您更改由不同红帽应用程序 BOMS 提供的单个版本,例如 camel-spring-boot-bom
。
patch-maven-plugin 的目的是将 Spring Boot BOM 上的 Camel 中列出的依赖项版本更新为您要应用到应用程序的补丁元数据中指定的版本。
patch-maven-plugin 执行以下操作:
- 检索与当前红帽应用程序 BOM 相关的补丁元数据。
- 将版本更改应用到从 BOMs 导入的 <dependencyManagement>。
在 patch-maven-plugin
获取元数据后,它会迭代声明插件的项目的所有受管和直接依赖项,并使用 CVE/patch 元数据替换依赖项版本(如果匹配)。在替换了版本后,Maven 构建将继续并根据标准 Maven 项目阶段进行进度。
流程
以下流程解释了如何将补丁应用到您的应用程序。
将
patch-maven-plugin
添加到项目的pom.xml
文件中。patch-maven-plugin
的版本必须与 Spring Boot BOM 上的 Camel 版本相同。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当您运行任何
mvn clean deploy
,mvn validate
, 或mvn dependency:tree
命令时,插件会搜索项目模块来检查模块是否使用 Red Hat build of Apache Camel for Spring Boot BOM。只有以下内容是支持的 BOM:-
com.redhat.camel.springboot.platform:camel-spring-boot-bom
: 用于红帽构建的 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
解析元数据,以选择应用到当前项目的版本。此操作只能用于带有特定版本的 Spring Boot BOM 上的 Camel Maven 项目。只有与版本范围或更新的版本匹配的元数据才适用,它只获取元数据的最新版本。 patch-maven-plugin
收集远程 Maven 存储库列表,用于下载由groupId
、artifactId
、和版本
在前面的步骤中标识的补丁元数据。这些 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
文件中,且您不想更改版本,您可以使用以下任一方法跳过补丁。
-
将 skip 选项添加到项目的
pom.xml
文件中,如下所示:
-
或者在运行
mvn
命令时使用-DskipPatch
选项,如下所示:
如上述输出中所示,patch-maven-plugin
没有被调用,这会导致补丁不会应用到应用。