B.3. カスタマイズされた Karaf アセンブリー

karaf-maven-plugin によって提供された karaf:assembly ゴールを使用するのが、推奨される Karaf サーバーアセンブリーの作成方法です。この方法では、プロジェクトの pom.xml ファイルの Maven 依存関係からサーバーをアセンブルします。karaf-maven-plugin 設定に指定されたバンドル (または機能) と、pom.xml<dependencies> セクションに指定された依存関係の両方をカスタマイズされた Karaf アセンブリーに追加できます。

  • kar

    kar タイプの依存関係は、スタートアップ (scope=compile)、ブート (scope=runtime)、またはインストール (scope=provided) kars として karaf-maven-plugin に追加されます。kar は作業ディレクトリー (target/assembly) にデプロイメントされ、機能 XML が検索され、追加の feature リポジトリーとして使用されます (ステージは指定の kar のステージと同じです)。

  • features.xml

    features 分類子の依存関係は、karaf-maven-plugin でスタートアップ (scope=compile)、ブート (scope=runtime) またはインストール (scope=provided) リポジトリーとして使用されます。kar で見つかった feature リポジトリーを明示的に追加する必要はありません。

  • jar および bundle

    bundle または jar タイプの依存関係は、karaf-maven-plugin でスタートアップ (scope=compile)、ブート (scope=runtime)、またはインストール (scope=provided) バンドルとして使用されます。

B.3.1. karaf:assembly goal

karaf-maven-plugin によって提供される karaf:assembly ゴールを使用して Karaf サーバーアセンブリーを作成できます。このゴールは、プロジェクト POM の Maven 依存関係からマイクロサービススタイルサーバーアセンブリーをアセンブルします。Fuse on OpenShift プロジェクトでは、karaf:assembly ゴールを Maven インストールフェーズにバインドすることが推奨されます。プロジェクトはバンドルパッケージを使用し、bootBundles 要素内部にリストすることでプロジェクト自体が Karaf コンテナーにインストールされます。

注記

Karaf フレームワーク機能などの必要な要素のみをスタートアップステージに含めるようにしてください。これは etc/startup.properties に追加され、このステージでは Karaf features サービスは完全に開始していないためです。他の要素はブートステージに移します。

以下の例は、クイックスタートの典型的な Maven 設定を表しています。

<plugin>
  <groupId>org.jboss.redhat-fuse</groupId>
  <artifactId>karaf-maven-plugin</artifactId>
  <version>${fuse.version}</version>
  <extensions>true</extensions>
  <executions>
    <execution>
      <id>karaf-assembly</id>
      <goals>
        <goal>assembly</goal>
      </goals>
      <phase>install</phase>
    </execution>
  </executions>
  <configuration>

    <karafVersion>{karafMavenPluginVersion}</karafVersion>
    <useReferenceUrls>true</useReferenceUrls>
    <archiveTarGz>false</archiveTarGz>
    <includeBuildOutputDirectory>false</includeBuildOutputDirectory>
    <startupFeatures>
      <feature>karaf-framework</feature>
            </startupFeatures>
            <bootFeatures>
      <feature>shell</feature>
      <feature>jaas</feature>
      <feature>aries-blueprint</feature>
      <feature>camel-blueprint</feature>
      <feature>fabric8-karaf-blueprint</feature>
      <feature>fabric8-karaf-checks</feature>
    </bootFeatures>
    <bootBundles>
      <bundle>mvn:${project.groupId}/${project.artifactId}/${project.version}</bundle>
    </bootBundles>
  </configuration>
</plugin>