Menu Close

A.2. Red Hat Fuse OSGi プロジェクトの設定

概要

OSGi バンドルをビルドするための Maven プロジェクトは、単純な単一レベルプロジェクトです。サブプロジェクトは必要ありません。ただし、以下を行う必要があります。

  1. バンドルプラグインを POM に 追加する
  2. 結果を OSGi バンドルとしてパッケージ化するように Maven に 指示する
注記

適切な設定でプロジェクトを設定するために使用できる Maven アーキタイプが複数あります。

ディレクトリー構造

OSGi バンドルを構築するプロジェクトは、単一レベルプロジェクトです。最上位の POM ファイルと src フォルダーのみが必要です。すべての Maven プロジェクトと同様に、すべての Java ソースコードを src/java フォルダーに配置し、Java 以外のリソースを src/resources フォルダーに配置します。

Java 以外のリソースには、Spring 設定ファイル、JBI エンドポイント設定ファイル、および WSDL コントラクトが含まれます。

注記

Apache CXF、Apache Camel、または別の Spring が設定されている Bean を使用する Red Hat Fuse OSGi プロジェクトには、src/resources/META-INF/spring フォルダーに beans.xml ファイルも含まれます。

バンドルプラグインの追加

バンドルプラグインを使用する前に、Apache Felix に依存関係を追加する必要があります。依存関係を追加したら、バンドルプラグインを POM のプラグイン部分に追加できます。

例A.1「OSGi バンドルプラグインの POM への追加」に、バンドルプラグインをプロジェクトに追加するために必要な POM エントリーを示します。

例A.1 OSGi バンドルプラグインの POM への追加

...
<dependencies>
  <dependency>
    <groupId>org.apache.felix</groupId>
    <artifactId>org.osgi.core</artifactId>
    <version>1.0.0</version>
  </dependency>
...
</dependencies>
...
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.felix</groupId>
      <artifactId>maven-bundle-plugin</artifactId>
      <configuration>
        <instructions>
          <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
          <Import-Package>*,org.apache.camel.osgi</Import-Package>
          <Private-Package>org.apache.servicemix.examples.camel</Private-Package>
        </instructions>
      </configuration>
    </plugin>
  </plugins>
</build>
...

例A.1「OSGi バンドルプラグインの POM への追加」のエントリーは以下を行います。

Apache Felix に依存関係を追加する

プロジェクトにバンドルプラグインを追加する

バンドルのシンボリック名としてプロジェクトのアーティファクト ID を使用するようにプラグインを設定する

バンドルされたクラスによってインポートされたすべての Java パッケージを含めるようにプラグインを設定する。また、org.apache.camel.osgi パッケージをインポートする

一覧表示されたクラスをバンドル化するが、エクスポートしたパッケージの一覧には含めないようにプラグインを設定する

注記

プロジェクトの要件を満たすように設定を編集します。

バンドルプラグインの設定に関する詳細は、「Bundle プラグインの設定」を参照してください。

バンドルプラグインのアクティベート

Maven がバンドルプラグインを使用するには、プロジェクトの結果をバンドルとしてパッケージ化するよう指示します。そのためには、POM ファイルの packaging 要素を bundle に設定します。

有用な Maven アーキタイプ

バンドルプラグインを使用するよう事前設定されたプロジェクトを生成するには、複数の Maven アーキタイプを使用できます。

Spring OSGi アーキタイプ

Spring OSGi アーキタイプは、以下のように Spring DM を使用して OSGi プロジェクトを構築するための汎用プロジェクトを作成します。

org.springframework.osgi/spring-bundle-osgi-archetype/1.1.2

以下のコマンドを使用してアーキタイプを呼び出します。

mvn archetype:generate -DarchetypeGroupId=org.springframework.osgi -DarchetypeArtifactId=spring-osgi-bundle-archetype -DarchetypeVersion=1.1.2 -DgroupId=groupId -DartifactId=artifactId -Dversion=version

Apache CXF コードファーストアーキタイプ

Apache CXF コードファーストアーキタイプは、以下のように Java からサービスを構築するためのプロジェクトを作成します。

org.apache.servicemix.tooling/servicemix-osgi-cxf-code-first-archetype/2010.02.0-fuse-02-00

以下のコマンドを使用してアーキタイプを呼び出します。

mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-osgi-cxf-code-first-archetype -DarchetypeVersion=2010.02.0-fuse-02-00 -DgroupId=groupId -DartifactId=artifactId -Dversion=version

Apache CXF wsdl ファーストアーキタイプ

Apache CXF wsdl ファーストアーキタイプは、以下のように WSDL からサービスを作成するためのプロジェクトを作成します。

org.apache.servicemix.tooling/servicemix-osgi-cxf-wsdl-first-archetype/2010.02.0-fuse-02-00

以下のコマンドを使用してアーキタイプを呼び出します。

mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-osgi-cxf-wsdl-first-archetype -DarchetypeVersion=2010.02.0-fuse-02-00 -DgroupId=groupId -DartifactId=artifactId -Dversion=version

Apache Camel アーキタイプ

Apache Camel アーキタイプは、以下のように Red Hat Fuse にデプロイされたルートを構築するためのプロジェクトを作成します。

org.apache.servicemix.tooling/servicemix-osgi-camel-archetype/2010.02.0-fuse-02-00

以下のコマンドを使用してアーキタイプを呼び出します。

mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-osgi-camel-archetype -DarchetypeVersion=2010.02.0-fuse-02-00 -DgroupId=groupId -DartifactId=artifactId -Dversion=version