5

ここで説明されているように、フラグメント プラグインを使用して既存のプラグインにパッチを適用しようとしています。

Fragments を使用してプラグインにパッチを適用する手順 - Eclipsepedia

ホスト プラグインへのパッチには、単一のクラス ファイルを更新されたクラス ファイルに置き換えることが含まれます。しかし、「ホスト パッケージのマニフェスト設定を変更する」セクションの手順 5) から 11)の概念がわかりません。ここでは、ホスト プラグインを変更するように指示されています。ホストプラグインに触れる必要がないというのが全体的な考えだと思いました-パッチを追加するのは、デプロイするフラグメントですか?

私の製品は、Eclipse プラットフォームと org.eclipse.cdt 機能に加えて、cdt を使用する独自のプラグインで構成されています。パッチを適用したいのは org.eclipse.cdt.core プラグインです。

eclipse wiki の手順に従い、ホスト プラグインにパッチを適用するパッケージとクラスを含むフラグメント プロジェクトを作成しました。これを maven でビルドしました。この製品を実行すると、フラグメント プラグインがアクティブであることがわかりますが、含まれているクラスが呼び出されません。元のホスト プラグイン クラスは .

問題は、変更されたホスト プラグインがデプロイされた製品に含まれていないことだと思います。ホストプラグインをデプロイするためのアドバイスに関するフラグメントガイドに含まれる手順はありません。どのように/なぜそれが必要なのかわかりません.

(私は過去にこの種の機能パッチを使用して成功しましたが、PDE を使用してのみ作成しました。機能パッチを Maven でビルドすることはできませんでした。そのため、フラグメントを使用して確認することを検討しています。それらをMavenでビルドできる場合。)

更新*: Tycho プラグインを使用して Maven Tycho - Building Eclipse plug-ins with mavenを使用してビルドを作成します。

「OSGi コア リリース 5 仕様」へのリンクありがとうございます。それは有益な読み物でした。

したがって、私の理解が正しければ、ホストプラグインがフラグメントでパッチされるようにすでに「準備」されている場合にのみ、フラグメントはホストプラグインの上にそのクラスをオーバーレイできます。これには、ホスト プラグインのマニフェストの変更が含まれます。具体的には: 1. 新しいライブラリを追加し、それを「.」の上に移動します。パッケージ。このライブラリをビルド プロパティから削除します。ライブラリは単なる参照であり、ホスト プラグインによって作成されるべきではありません。+ Eclipse-ExtensibleAPI: true を manifest.mf ファイルに追加 + バージョン番号を上げます。

私の場合、フラグメントを使用して org.eclipse.cdt.core プラグインにパッチを適用したい場合、org.eclipse.cdt.core プラグインの準備済みバージョンとフラグメント プラグインを提供する必要があるようです。

*: 回答のマナーがよくわからない。多くのことをするのに十分な評判がありません。コメント ボックスは少数の文字のみを受け入れます。

4

1 に答える 1

0

基本的に、Eclipse での GUI 操作によって達成される結果を示す、OSGi Fragment バンドルレベルに関するより直感的な説明 (少なくとも私にとっては) があります。this によるとBundle-ClassPath、ホストのマニフェストの は、既存のクラスを置き換える、またはより良い場合はオーバーレイする場合に適応させる必要があります。

詳細については、OSGi コア リリース 5 仕様、3.14 フラグメント バンドル、69ページ以降も参照してください。

Maven Bundle Pluginでバンドルを作成しましたよね?

于 2014-10-10T23:03:01.410 に答える