17.2. Apache Karaf の BOM ファイル
Maven BOM (Bill of Materials) ファイルの目的は、正常に動作する Maven 依存関係バージョンのセットを提供し、各 Maven アーティファクトに対して個別にバージョンを定義する必要をなくすことです。
Apache Karaf の Fuse BOM には以下の利点があります。
- Maven 依存関係のバージョンを定義するため、依存関係を POM に追加するときにバージョンを指定する必要がありません。
- 特定バージョンの Fuse に対して完全にテストされ、完全にサポートする依存関係のセットを定義します。
- Fuse のアップグレードを簡素化します。
Fuse BOM によって定義される依存関係のセットのみが Red Hat によってサポートされます。
Maven プロジェクトに Maven BOM ファイルを組み込むには、以下の例のように、プロジェクトの pom.xml ファイル (または親 POM ファイル内の) dependencyManagement 要素を指定します。
<?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 のバージョン管理を簡素化するように設計されています。しかし、新しい BOM を使用するためにリファクタリングされていないので、Fuse クイックスタートおよび Maven アーキタイプは古い BOM を使用します。どちらの BOM も正しく、Maven プロジェクトで使用することができます。今後の Fuse リリースでは、新しい BOM を使用するように、クイックスタートと Maven archetype がリファクタリングされます。
依存関係管理のメカニズムを使用して BOM を指定した後、アーティファクトのバージョンを指定しなくても、Maven 依存関係を POM に追加できるようになります。たとえば、camel-velocity コンポーネントの依存関係を追加するには、以下の XML フラグメントを POM の dependencies 要素に追加します。
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-velocity</artifactId>
</dependency>
この依存関係の定義では、version 要素が省略されることに注意してください。