2017-04-04 12 views
0

私はRCP4アプリケーションを構築しています。RCP4プロジェクトにosgi以外のjarファイルを追加する

私はa.jarとb.jarという2つのnon-osgi jarを持っています。両方のjarにはosgiに依存しないものがたくさんあります。 a.jarの依存関係の1つはb.jarです。だから、階層は次のようになります。bDependencyN.jarsの

My application 
|--a.jar 
|----aDependency1.jar 
|----aDependency2.jar 
|----aDependencyN.jar 
|----b.jar 
|------bDependency1.jar 
|------bDependency2.jar 
|------bDependencyN.jar 

一部がaDependencyN.jars の異なるバージョン(ある例では、コモン・ログ-1.1.2 VSコモンズ・ログ-1.0.4.jarです.jar)

RCP4アプリケーションからa.jarとb.jarを直接参照する必要があります。言い換えれば、私はコードを書くとき、私ははA.jarとb.JARがからパッケージをインポートします)最善のアプローチである

  • コマンドライン経由で2.4 BND使用以外のすべてをオンにします-osgiはosgiのものに入れます。次に、すべてのjarをターゲットファイル経由でプロジェクトに追加します

  • 「既存のJARアーカイブからプラグイン」を作成し、a.jarとそのすべての依存関係を選択して、「デプロイ可能なプラグインとフラグメント"a.with.libs.jarと呼ばれる。私はb.jarと同じことを行い、b.with.libs.jarを作成します。次に、2つの新しいjarファイルをターゲットファイル経由でプロジェクトに追加します。

  • 新しいプロジェクトを作成します。「既存のJARアーカイブからプラグイン」を作成し、a.jarとそのすべての依存関係、b.jar、その依存関係をab.with.libs.jarと呼ばれる「デプロイ可能なプラグインとフラグメント」としてエクスポートします。私はターゲットファイル経由でプロジェクトに新しいjarファイルを追加します

  • 上記の提案よりも良いアプローチがありますか?

答えて

0

一つのオプションサードパーティの依存関係を管理し、それらからのOSGiバンドルを作成するには(私も作者午前)bnd-platformを使用することです。 MavenリポジトリとローカルJarから取得した両方の依存関係と共に使用することができます(README参照)。 Maven依存関係を設定すると、推移依存関係も含まれます。フードの下でそれはbndを使用します。必要に応じて、Jarsのラップ方法をカスタマイズすることもできます。 bnd-platformは、Gradle用のプラグインです。this templateから簡単に始めることができます。プロジェクトのREADME(バンドル名、バージョンのバンドル)に記載されているように依存関係を追加し、gradlew bundlesを実行するだけです。作成したバンドルをターゲットプラットフォームに追加することができます。 bnd-platformを使用して、p2リポジトリ/更新サイトを構築することもできます。

+0

お返事ありがとうございます。私の現在のプロジェクトではMavenを使用していません。以前はGradleを使用していませんでした。 bnd-platformのウェブサイトのドキュメントは私にとっては少し進歩しているようですが、上記の例を反映した正しいgradleファイルをどこから始めるべきかは分かりません(すべてのローカルjar)。 – ekjcfn3902039

+0

すべてのローカルJAR(Mavenの依存関係ではない)であれば、bnd-platformは自動的に推移的な依存関係を追加することができないため、少しのメリットが失われます。上記のテンプレートを使用することができます。ドキュメントから、Jarsを追加するためのローカル依存関係のセクションのみが必要です。https://github.com/stempler/bnd-platform#local-dependencies – stempler

関連する問題