17

Eclipseアプリケーションの開発では、MANIFEST.MFの[依存関係]タブに2つの列があります。

1つはでRequired Plug-ins、もう1つはですImported Packages

Imported Packages持っているのになぜ必要なのRequired Plug-insですか?

コメントには、「このプラグインは元のプラグインを明示的に識別せずに依存する」と書かれていますが、どのような場合に元のプラグインを明示的に識別したくないのか、そしてその利点は何ですか? ?

ここに画像の説明を入力してください

追加した

関連する質問-Eclipseパッケージとプラグインの違いは何ですか?

4

2 に答える 2

11

パッケージをインポートすると、バンドルを要求するよりもさらにレベルの高い間接参照が提供されます。

いくつかの標準APIの場合を考えてみましょうorg.standard.framework。2つの会社がこのAPIを実装していると仮定します。おそらく、バンドルcom.abc.frameworkcom.xyz.framework。これらの実装バンドルは両方ともorg.standard.frameworkパッケージをエクスポートします。

ここで、実装が必要であると仮定しますが、org.standard.frameworkどれを特に気にする必要はありません。いずれかcom.abc.frameworkまたはcom.xyz.frameworkバンドルが必要な場合は、特定の実装に縛られています。import-packageディレクティブを使用すると、OSGiを間接レイヤーとして機能させることができます。

import-packageのもう1つの利点は、パッケージを別のバンドルに移動した場合に依存関係を変更する必要がないことです。この状況は、バンドルが分割または結合されたリファクタリング中に発生する可能性があります。

これらの理由から、OSGi仕様の作成者は現在、require-bundleよりも比較的新しいimport-packageディレクティブを使用することを一般的に推奨しています。問題は、すべてのバンドルがこれに対応できるわけではないということです。多くの場合、パッケージをエクスポートするときにバージョンをまだ指定していません。これにより、多くの場合、インポートパッケージは実用的ではなくなります。

于 2012-12-19T21:37:11.407 に答える
0

プラグイン全体への依存関係を指定するのではなく、プラグインが多数ある場合は、必要なパッケージのみが循環依存関係を作成する可能性があります。実際に必要なパッケージのみを指定することをお勧めします。確かな場合のプラグインの数が少ない場合は、依存関係を効率的に維持できます。プラグイン全体を指定することで、生活を簡素化できます。お役に立てれば。

于 2012-12-19T19:48:41.273 に答える