A.2. Red Hat FuseOSGi プロジェクトのセットアップ
概要
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
ファイルも含まれます。
バンドルプラグインの追加
バンドルプラグインを使用する前に、ApacheFelix への依存関係を追加する必要があります。依存関係を追加した後、バンドルプラグインを 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 パッケージをインポートする
リストされたクラスをバンドルするようにプラグインを設定しますが、エクスポートされたパッケージのリストにはそれらを含めません
プロジェクトの要件を満たすように設定を編集します。
バンドルプラグインの設定の詳細には、「バンドルプラグインの設定」 を参照してください。
バンドルプラグインのアクティブ化
Maven にバンドルプラグインを使用させるには、プロジェクトの結果をバンドルとしてパッケージ化するように 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-first アーキタイプは、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