18.2. 用于 Apache Karaf 的 BOM 文件

Maven Bill of Materials(BOM) 文件的目的是提供一组精心设计的 Maven 依赖项版本,从而为您保存每个 Maven 工件的版本,从而单独定义每个 Maven 工件的版本。

Apache Karaf 的 Fuse BOM 具有以下优点:

  • 定义 Maven 依赖项的版本,因此当您向 POM 添加依赖项时,您不需要指定版本。
  • 定义一组经过策展的依赖关系,这些依赖项是针对特定版本的 Fuse 完全测试和支持的。
  • 简化 Fuse 升级.
重要

红帽只支持由 Fuse BOM 定义的一组依赖项。

要将 Maven BOM 文件合并到 Maven 项目中,请在项目的 pom.xml 文件中指定 dependencyManagement 元素(或者,在父 POM 文件中可能),如下例所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project ...>
  ...
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!-- configure the versions you want to use here -->
    <fuse.version>7.11.1.fuse-sb2-7_11_1-00022-redhat-00002</fuse.version>

  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.jboss.redhat-fuse</groupId>
        <artifactId>fuse-karaf-bom</artifactId>
        <version>${fuse.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  ...
</project>
注意

org.jboss.redhat-fuse BOM 是 Fuse 7 中的新内容,它旨在简化 BOM 版本。Fuse 快速入门和 Maven 层次结构仍使用旧的 BOM 风格,因为它们还没有重构为使用新的模式。BOMs 正确,您可以在 Maven 项目中使用它们。在即将发布的 Fuse 版本中,快速入门和 Maven archetypes 将重构为使用新的 BOM。

在使用依赖关系管理机制指定 BOM 后,可以在不 指定工件版本的情况下,将 Maven 依赖项添加到 POM 中。例如,要为 camel-velocity 组件添加一个依赖项,您要将以下 XML 片段添加到 POM 中的 dependencies 元素中:

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-velocity</artifactId>
</dependency>

注意 version 元素是如何从这个依赖关系定义中省略的。