ここで説明されているように、フラグメント プラグインを使用して既存のプラグインにパッチを適用しようとしています。
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 プラグインの準備済みバージョンとフラグメント プラグインを提供する必要があるようです。
*: 回答のマナーがよくわからない。多くのことをするのに十分な評判がありません。コメント ボックスは少数の文字のみを受け入れます。