11

プラグインの開発を容易にするために、OSGi ランタイム (Equinox) をカスタム クライアント サーバー アプリケーションに組み込みましたが、これまでのところ順調に進んでいます。組み込みのマニフェスト エディター、依存関係管理、およびエクスポート ウィザードにより、Eclipse を使用してプラグインを作成しています。Eclipse を使用してビルドを管理することは、Hudson による継続的インテグレーションにはあまり役立ちません。

他の OSGi バンドルに依存する OSGi バンドルがあります。カスタム ANT ビルドでビルド順序をハードコーディングするのは本当に嫌です。これは過去のことであり、かなり恐ろしいことです。OSGi の依存関係を自動的に解決しない場合でも、簡単に管理できるビルド ツールはありますか? これを行う方法の適切な例はありますか?

説明:

生成されたビルド スクリプトは、Eclipse 経由でのみ使用できます。Eclipse の一部を手動で実行する必要があります。また、Eclipse ビルドにはない標準ターゲットもいくつかあります。再生成する可能性があるため、生成されたファイルを変更したくありません (インクルードできることはわかっていますが、Eclipse gen ファイルをすべて回避したいです)。一緒)

ここに私のプロジェクトのレイアウトがあります:

/
-PluginA
-PluginB
-PluginC
.
.
.

Eclipse PDE を使用する場合、各プラグインにはマニフェストがありますが、PDE が私のためにそれを行うため、build.xml はありません。Hudson を使用して GUI 駆動のプロセスを自動化するのは困難です。それぞれをビルドするために独自の build.xml をセットアップしたいのですが、依存関係とビルド順序の問題があります。これらの問題は、マニフェスト ファイル (OSGi インポートを記述する) によって引き起こされます。たとえば、PluginC は、PluginA に依存する PluginB に依存します。それらは正しい順序で構築する必要があります。ビルド順序を手動で制御できることに気づきました。ビルド順序の依存関係管理を自動化するのに役立つツールを探しています。

4

9 に答える 9

7

Maven2 ずっと; それを管理するのに役立つm2eclipseと呼ばれるEclipseプラグインがあり、依存関係の問題を正確に解決し、次にいくつかの問題を解決します。ドキュメントとして無料のオンライン ブックがあります。

具体的には、多くのコンポーネントをまとめてバンドルするためのマルチモジュール プロジェクトを調べ、Maven にビルド順序と依存関係を解決させます。

Eclipse 統合に関する章もあります。

そして、これは Eclipse と Maven だけです。次は、OSGi 用のクールなグッズを入手します。

基本的に、Maven モジュール モデルは OSGi のバンドル モデルに完全に適合します。私たちは 3 年以上 Maven を使用して、数百のバンドルを持つ複数の製品を構築および管理してきましたが、それは素晴らしいことです。

于 2008-09-05T13:19:48.177 に答える
2

セカンドMaven2。ビルド用の Tycho プラグインを調べてください。これらは Eclipse の JDT コンパイラを使用しているため、Eclipse が実行時に行うのと同じように、コンパイル時にすべての OSGi ルールが実装されます。

あるいは、Apache Felix BND プラグインも人気があるようです。Maven と Eclipse の開発環境をより密接に統合しているように見えるので、私は Tycho を好みます。

于 2008-10-25T14:33:18.907 に答える
1

バックミンスターを使用しています。これはビルドとアセンブリのフレームワークであり、依存関係の解決、さまざまなリポジトリからのフェッチ、製品のビルドとパッケージ化を処理します。

これは Eclipse ツール プロジェクトです。これは、PDE とうまく統合されます。

これは、RCP を構築するために使用するすべてのメタデータが、バックミンスターが解決して構築するのに役立つことを意味します。たとえば、feature.xml と、Manifest.MF の Require-Bundle ヘッダー、.product.

現在、各バンドルにビルド スクリプトは含まれていません。現在、製品ごとに 1 つのビルドがあります。Buckminster は、依存関係グラフを慎重に調べます。

彼ら (Buckminster チーム) は、プロジェクト自体をホストするために Hudson を使用し始めましたが、既存のクルーズ コントロール/Ant システムをそれで動作させるには少し手間がかかりました。彼らのビルドセットアップもダウンロードできると思います。

比較的初期の段階であるにもかかわらず、私たちは本当に感銘を受けました.

Pax-Constructも検討しましたが、Maven は使用しませんでした。

現在、単体テストの取り組みを強化するために、Spring DM テスト フレームワークも検討しています。

于 2008-09-05T12:32:57.697 に答える
1

PDE ヘッドレス ビルド。Eclipseによって十分に文書化されています。Eclipse プラグインをビルドしていて、コマンド ライン経由で実行したい場合は、Eclipse PDE ヘッドレス ビルドが最適です。

于 2010-06-28T19:06:12.550 に答える
1

いくつかの古い質問を締めくくります...

私たちのセットアップは、ネットワーク接続とタイミングが不足しているため、maven を助長しませんでした。オフラインのMavenセットアップがあることは知っていますが、時間がかかりすぎました。ビルド プロセスを再編成する時間ができたときに、適切なセットアップを使用できるようになることを願っています。

このソリューションには、Ant、BND、およびいくつかのカスタム ant タスクが含まれていました。さまざまなバンドルの依存関係は手動で管理されます。私たちはすでに Ant を使用していました。BND とカスタム タスクがすべてを結び付けました。カスタム タスクは、bnd/eclipse プロジェクトが同期していることを確認しました。

于 2009-01-26T01:44:39.053 に答える
0

HudsonをPluginBuilderと組み合わせて使用​​して、EclipseベースのOSGiバンドル/プラグインを構築します。これは、プラグインを構築するためのEclipseの標準PDEプロセスに基づいています。これは、コンパイラとしてEclipseを使用することを意味します。

于 2008-10-16T12:15:19.090 に答える
0

問題が発生している場所を詳しく教えてください。あなたはOSGiバンドルの依存関係について言及しています。これは実行時ですか?またはコンパイル時ですか?最初のケースでは、宣言型サービスを検討する必要があります(OSGi仕様を参照)。

于 2008-09-05T21:33:11.300 に答える
0

Mavenはインターネット接続を必要としません!キリストのために、-oスイッチを使用してください。

于 2011-07-13T14:38:21.953 に答える
0

私はmaven 3.0.2を使用しています

mvn generate:アーキタイプ

select 252 - osgi-archetype
mvn idea:idea

http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.htmlを参照してください

依存関係をバンドルに追加するには、pom.xml でこの短い例を使用します

<Export-Package>org.foo.myproject.api</Export-Package>

また

<Import-Package>org.foo.myproject.api</Import-Package>
于 2011-03-01T13:24:57.820 に答える