Menu Close

5.3.7. Bundle プラグインの設定

概要

バンドルプラグインが機能するために必要な情報はほとんどありません。必要なすべてのプロパティーは、デフォルト設定を使用して有効な OSGi バンドルを生成します。

デフォルト値のみを使用して有効なバンドルを作成することは可能ですが、いくつかの値を変更する必要がある可能性があります。プラグインの instructions 要素内でほとんどのプロパティーを指定できます。

構成プロパティー

一般的に使用される設定プロパティーには、以下のものがあります。

バンドルのシンボリック名の設定

デフォルトでは、バンドルプラグインは Bundle-SymbolicName プロパティーの値を groupId + "." + artifactId に設定します。以下の例外があります。

  • groupId にセクションが 1 つしかない場合は (ピリオドなし)、クラスを含む最初のパッケージ名が返されます。

    たとえば、グループ ID が commons-logging:commons-logging の場合、バンドルのシンボリック名は org.apache.commons.logging になります

  • artifactIdgroupId の最後のセクションと同じ場合は、groupId が使用されます。

    たとえば、POM がグループ ID とアーティファクト ID を org.apache.maven:maven として指定すると、バンドルのシンボリック名は org.apache.maven になります

  • artifactIdgroupId の最後のセクションで始まる場合は、その部分が削除されます。

    たとえば、POM がグループ ID とアーティファクト ID を org.apache.maven:maven-core として指定すると、バンドルのシンボリック名は org.apache.maven.core になります

バンドルのシンボリック名には、例5.2「バンドルのシンボリック名の設定」 に示されるように、プラグインの 命令 要素に Bundle-SymbolicName 子を追加します。

例5.2 バンドルのシンボリック名の設定

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <configuration>
   <instructions>
     <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
     ...
    </instructions>
  </configuration>
</plugin>

バンドル名の設定

デフォルトでは、バンドルの名前は ${project.name} に設定されます。

バンドルの名前に独自の値を指定するには、例5.3「バンドル名の設定」 に示されるように Bundle-Name 子をプラグインの instructions 要素に追加します。

例5.3 バンドル名の設定

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <configuration>
   <instructions>
     <Bundle-Name>JoeFred</Bundle-Name>
     ...
    </instructions>
  </configuration>
</plugin>

バンドルのバージョンの設定

デフォルトでは、バンドルのバージョンは ${project.version} に設定されます。ダッシュ(-)はドット(.)に置き換えられ数字は 4 桁の数字まで追加されます。たとえば 、4.2-SNAPSHOT4.2.0.SNAPSHOT になります。

バンドルのバージョンの独自の値を指定するには、例5.4「バンドルのバージョンの設定」 にあるように、バンドルバージョン 子をプラグインの instructions 要素に追加します。

例5.4 バンドルのバージョンの設定

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <configuration>
   <instructions>
     <Bundle-Version>1.0.3.1</Bundle-Version>
     ...
    </instructions>
  </configuration>
</plugin>

エクスポートされるパッケージの指定

デフォルトでは、OSGi マニフェストの Export-Package 一覧は、ローカルの Java ソースコード(src/main/java 下)のすべてのパッケージ(src /main/java下) および すべてのパッケージ( impl または. internal を含むパッケージ )によって入力されます。

重要

プラグイン設定で Private-Package 要素を使用し、エクスポートするパッケージの一覧を指定しないと、デフォルトの動作には、バンドルの Private-Package 要素に一覧表示されるパッケージのみが含まれます。パッケージはエクスポートされません。

デフォルトの動作では、パッケージが非常に大きくなり、プライベートにしておくべきパッケージがエクスポートされることになります。エクスポートしたパッケージの一覧を変更するには、プラグインの instructions 要素に Export-Package 子を追加します。

Export-Package 要素は、バンドルに含まれるパッケージの一覧と、エクスポートされるパッケージを指定します。パッケージ名は、* ワイルドカード記号を使用して指定できます。たとえば、エントリー com.fuse.demo.* には、com. fuse.demo から始まるプロジェクトのクラスパス上のパッケージがすべて含まれます。

除外するパッケージを指定して、エントリーの前に ! を付けることができます。たとえば、エントリー !com.fuse.demo.private は、パッケージ com.fuse.demo.private を除外します。

パッケージを除外する場合は、リスト内でのエントリーの順序が重要です。リストは最初から順番に処理され、以降の矛盾するエントリーは無視されます。

たとえば、com.fuse.demo パッケージを除き、com. fuse.demo で始まるすべてのパッケージを含めるには、 以下を使用してパッケージの一覧を表示します。

!com.fuse.demo.private,com.fuse.demo.*

ただし、com. fuse.demo.*,!com.fuse.demo.private を使用するパッケージを一覧表示すると、最初のパターンと一致するため、com .fuse.demo.private がバンドルに含まれます。

プライベートパッケージの指定

エクスポート せずに バンドルに含めるパッケージの一覧を指定する場合は、バンドルプラグイン設定に Private-Package 命令を追加できます。デフォルトでは、Private-Package 命令を指定しない場合、ローカルの Java ソース内のすべてのパッケージはバンドルに含まれます。

重要

パッケージが Private-Package 要素と Export-Package 要素の両方のエントリーと一致する場合は、 Export-Package 要素が優先されます。パッケージがバンドルに追加され、エクスポートされます。

Private-Package 要素は、バンドルに含まれるパッケージの一覧を指定するため、Export-Package 要素と同様に機能します。バンドルプラグインはリストを使用して、バンドルに含めるプロジェクトのクラスパスにあるすべてのクラスを検索します。これらのパッケージはバンドルにパッケージ化されますが、エクスポートされません( Export-Package 命令によって選択されない限り)。

例5.5「バンドルへのプライベートパッケージの追加」に、バンドルにプライベートパッケージを含める設定を示します

例5.5 バンドルへのプライベートパッケージの追加

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <configuration>
   <instructions>
     <Private-Package>org.apache.cxf.wsdlFirst.impl</Private-Package>
     ...
    </instructions>
  </configuration>
</plugin>

インポートされるパッケージの指定

デフォルトでは、バンドルプラグインは OSGi マニフェストの Import-Package プロパティーを、バンドルのコンテンツによって参照されるすべてのパッケージのリストで設定します。

デフォルトの動作は通常、ほとんどのプロジェクトでは十分ですが、リストに自動的には追加されないパッケージをインポートする場合があります。デフォルトの動作では、不要なパッケージがインポートされる可能性もあります。

バンドルによってインポートされるパッケージの一覧を指定するには、プラグインの instructions 要素に Import-Package 子を追加します。パッケージ一覧の構文は、Export-Package 要素と Private-Package 要素と同じです。

重要

Import-Package 要素を使用する場合、プラグインはバンドルの内容を自動的にスキャンせず、必要なインポートがあるかどうかを判別します。バンドルの内容がスキャンされるようにするには、パッケージ一覧の最後のエントリーとして * を配置する必要があります。

例5.6「バンドルによってインポートされるパッケージの指定」に、バンドルによってインポートされるパッケージを指定する設定を示します。

例5.6 バンドルによってインポートされるパッケージの指定

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <configuration>
   <instructions>
     <Import-Package>javax.jws, javax.wsdl, org.apache.cxf.bus, org.apache.cxf.bus.spring, org.apache.cxf.bus.resource, org.apache.cxf.configuration.spring, org.apache.cxf.resource, org.springframework.beans.factory.config, * </Import-Package>
     ...
   </instructions>
  </configuration>
</plugin>

詳細情報

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