JarライブラリからOSGiバンドルを作成するにはどうすればよいですか?
Eclipseを使用している場合:そのためのウィザードがあります。
これにより、いくつかのjarライブラリを選択し、これらのjarを含むプラグインプロジェクト(つまり、OSGiバンドル)を作成できます。
あなたはここでそれを見つけることができます:
File -> New -> Other ... -> Plug-in from Existing jar Archives.
まず、リポジトリからosgi対応バージョンのライブラリを見つけることができるかどうかを確認してください
OSGi対応バージョンが見つからない場合。 paxツール PaxConstruct を使用するか、 aQuteのBndツール を使用することができます。
JARアーカイブをプロジェクトに解凍しますisdeselected->選択を解除すると、のすべてのパッケージがエクスポートされますJAR
JARアーカイブをプロジェクトに解凍するが選択されている場合は、必要なパッケージを手動でエクスポートする必要があります。 MANIFEST.MFファイル。
[完了]をクリックします。ワークスペースに、transport-5.1.1という名前のプロジェクトが作成されています。また、JARのすべてのパッケージがMANIFEST.MFファイルにエクスポートされていることを確認できます。
Eclipse Bundle Recipe プロジェクトは、Mavenリポジトリから消費されるJARにOSGiメタデータを追加するためのMavenベースのアプローチを提供します。
基本的に、 bnd tool を使用します。このツールはスイスアーミーナイフのようなものです。 jarファイルとクラスファイルを分析し、パッケージのインポートとエクスポートを適切に計算します。独自のjarを自分で変換するにはbndを使用する必要があります。 Maven Centralで利用可能 です。
パーティーへの遅い到着:
Gradleを使用している場合、 osgi-run を適用すると、プロジェクトの通常の依存関係としてjarを追加できます。 =プラグイン。
Osgi-runプラグインは、jarを透過的にバンドルにラップし、その中のすべてのパッケージをエクスポートして、すべてのインポートを計算します。 Gradleはjarの推移的な依存関係を認識しているため、必要に応じて、それらについても同じことを行います。
Jarは、osgi-runが作成するOSGiランタイムの一部になります。これは、gradle runOsgi
またはgradle createOsgi
で起動し、run.sh
またはrun.bat
スクリプトを実行できます。
もちろん、実際のラッピングは、OSGiの世界のスイスナイフである Bnd によって行われます。
折り返しの方法(通常はインポート/エクスポートする必要があるもの)を構成する場合は、Gradleビルドファイルで簡単に行うことができます。詳細については、 ドキュメント を参照してください。
例:
wrapInstructions {
// use regex to match file name of dependency
manifest( "c3p0.*" ) {
// import everything except the log4j package - should not be needed
instruction 'Import-Package', '!org.Apache.log4j', '*'
instruction 'Bundle-Description', 'c3p0 is an easy-to-use library for making traditional ' +
'JDBC drivers "enterprise-ready" by augmenting them with functionality defined by ' +
'the jdbc3 spec and the optional extensions to jdbc2.'
}
}