web-dev-qa-db-ja.com

jarライブラリからOSGiバンドルを作成するにはどうすればよいですか?

JarライブラリからOSGiバンドルを作成するにはどうすればよいですか?

21
EK.

Eclipseを使用している場合:そのためのウィザードがあります。

これにより、いくつかのjarライブラリを選択し、これらのjarを含むプラグインプロジェクト(つまり、OSGiバンドル)を作成できます。

あなたはここでそれを見つけることができます:

File -> New -> Other ... -> Plug-in from Existing jar Archives.

alt text

28
wwerner

原則として、OSGiメタデータをマニフェストに追加する必要があります

プラグイン開発ツールキットの一部であるはずのこれらのエントリを追加するための非常に実用的な方法を提供するEclipse用のバンドルクリエーターがあります。

これが article プロセスの詳細と、Bndツール、Mavenなどを使用してそれを行う方法です。

私は個人的に paxツール がとても好きです。これはすべてコマンドラインベースですが、非常に実用的です。既存のjarのOSGiバンドルを作成するには、 bnd tool を使用できます。

9
Peter Tillemans

まず、リポジトリからosgi対応バージョンのライブラリを見つけることができるかどうかを確認してください

  1. SpringSource http://www.springsource.com/repository
  2. Fusesource http://repo.fusesource.com/

OSGi対応バージョンが見つからない場合。 paxツール PaxConstruct を使用するか、 aQuteのBndツール を使用することができます。

5
Abdel Raoof
  • 既存のJARアーカイブから新しいプラグインプロジェクトを作成します。

enter image description here

  • エクスポートするjarファイルを追加します

enter image description here

  • [次へ]をクリックして、プロジェクトに名前を付けます。

enter image description here

  • 注意:
  • ターゲットプラットフォームでOSGIフレームワークが選択されていることを確認してください。
  • JARアーカイブをプロジェクトに解凍しますisdeselected->選択を解除すると、のすべてのパッケージがエクスポートされますJAR

  • JARアーカイブをプロジェクトに解凍する選択されている場合は、必要なパッケージを手動でエクスポートする必要があります。 MANIFEST.MFファイル。

[完了]をクリックします。ワークスペースに、transport-5.1.1という名前のプロジェクトが作成されています。また、JARのすべてのパッケージがMANIFEST.MFファイルにエクスポートされていることを確認できます。

3
Tarang Bhalodia

Eclipse Bundle Recipe プロジェクトは、Mavenリポジトリから消費されるJARにOSGiメタデータを追加するためのMavenベースのアプローチを提供します。

基本的に、 bnd tool を使用します。このツールはスイスアーミーナイフのようなものです。 jarファイルとクラスファイルを分析し、パッケージのインポートとエクスポートを適切に計算します。独自のjarを自分で変換するにはbndを使用する必要があります。 Maven Centralで利用可能 です。

1
Gunnar

パーティーへの遅い到着:

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.'
    }
}
1
Renato