2016-04-07 13 views
1

現在、開発者は複数のOSGiバンドルで作業し、複数のOSGiバンドルはOSGIのインポート/エクスポートによって相互に使用します。 Eclipseは、開発とテストに使用されます。開発者ではなく、ビルドサーバーでのみMavenを使用

ここでは、Mavenを使用して(リポジトリから)すべてのosgiバンドルを構築するCIサーバ(Jenkins)を設定します。したがって、CIサーバでのみ、Mavenの必要性があります。これは、開発者がワークステーション上で開発するときにpom.xmlを参照したり気にかけたりすることもないことを意味します。

私の最初の質問はそうすることが可能な場合です。開発者がマニフェストのインポートとエクスポートを変更すると、これらの依存関係をコンパイラで利用できるようにする必要があります。たとえば、mavenはBundleAをBundleBからビルドしてパッケージAをインポートします。通常、pom.xmlにはバンドルA(以前はローカルMavenリポジトリにデプロイされていなければならない)に対する依存関係が含まれています。しかし、開発者が自分のMANIFEST.MFをバンドル内で変更するだけでは、pom.xmlにエントリがありません。 MANIFESTの構文解析から正しい依存関係が決定される可能性はありますか?または、別の解決策:ビルドされたすべてのjarを持つクラスパスをmavenに伝えますか?

私の2番目の質問は、ci-serverだけでmavenを使用することを推奨しますが、開発者は使用しないことをお勧めします。

よろしく

+0

も参照[この回答](http://stackoverflow.com/a/11373010/1744774)へ[Mavenを持つOSGiアプリケーションを開発する際に、私は最初またはMANIFEST最初のPOMを使用する必要がありますか?](http://stackoverflow.com/q/11373009/1744774)、最初にPOMとMANIFESTを比較します。 –

答えて

2

開発者は、ビルドのために使うのですか、次に何Mavenを使用しない場合。自動化されたビルドシステムを持つことが理にかなっていると思います。ですから、開発者システムでは、mavenや、gradleのようなものを使うべきです。

もう1つの質問は、Manifestファイルを手作業で維持することが理にかなっているかどうかです。それは日食でPDEが動作する方法ですが、構築中にマニフェストを作成する方がはるかに効果的だと思います。これは、felixのmaven-bundle-pluginを使用して行うことができます。そのように働くほうがはるかに簡単です。

いくつかの例については、karaf tutorialsを参照してください。

もう1つの選択肢は、bndtoolsとそのグラデルのビルドを調べることです。それは少し特殊ですが、非常に便利です。

+0

実際、私たちの開発者は本当にビルドしません。彼らはeclipse(基本的にosgiコンテナ)内でosgiバンドルをコンパイル+実行します。私は ジョークはさておき... :-)十年前から仕事のスタイルを知っている –

+1

うーん... ..問題がある:開発者がアプリケーションを構築することができない場合はどのように彼は、CIサーバー上のビルドが意志を確認することができます作業? –

+0

これまで、開発者はeclipseのエクスポート関数を使用して完全な製品(複数のosgiバンドル/プロジェクト)をチェックアウトし、最終的なosgi-bundle-jarsを作成する必要がありました。今では、開発者は完全な製品をチェックし、ローカルのEclipse環境でテストする必要があります。しかし、新しいことは、CIサーバーがosgiバンドルを構築し、次のステップとして、開発者が使用するこのeclipse-equinoxミックスではなく、アプリケーションのみを実行するosgiコンテナでの自動統合テストが行​​われることです。 –

関連する問題