Mavenを使用すると、どのライブラリからでもOSGiバンドルを簡単に作成できます。しかし、他の仕組みでも同じ結果を生み出すことができると思います。 Mavenのソリューションは、どのように動作するのか理解するのに役立ちました。
ライブラリを依存関係とするプロジェクトを作成し、Apache Felix projectのmaven-bundle-pluginを使用してプロジェクトをパッケージ化し、Export-Package
命令でライブラリパッケージを指定することによって、バンドルを作成します。
<?xml version="1.0" encoding="UTF-8" ?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.lib</groupId>
<artifactId>protobuf-dist</artifactId>
<version>2.1.0</version>
<name>Google Protocol Buffers OSGi Distribution</name>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>com.google.protobuf</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
を使用すると、すべての推移的依存関係が束状に巻かれたい場合は、あまりにも、プラグインのbundleall
目標を使用します。私は、これはOSGiのコンテナ内で束の間Googleのプロトコルバッファを共有するために使用しました。
プラグインは、依存関係にある既存のOSGiマニフェストを認識し、尊重します。
また、バンドルプラグインを使用してマニフェストを作成し、jar
パッケージ化プラグイン(またはjar-with-dependencies
組み込みアセンブリ)に、アーカイブセクション経由でそのマニフェストを使用するように指示することもできます。上にリンクされているプラグインのページにその操作方法が示されています。
多くの一般的なライブラリの "osgi-ified"バージョンを含むリポジトリもあります:SpringSourceは大きなものです:http://www.springsource.com/repository/app/ – Thilo
リンクありがとうございます! – basszero