28

ターゲット プラットフォームに対して RCP アプリケーションを開発するとき、私 (および他のユーザー) は、Eclipse リリース ソフトウェア サイトから追加する必要がある依存関係に出くわすことがよくあります。プラグインが IDE に含まれていて、ターゲット プラットフォームには含まれていない場合、製品定義からアプリケーションを実行しようとすると、そのようなバンドルを解決できないことを知らせる警告画面が表示されます。

「問題ありません。プラグインを含む機能を Eclipse ダウンロード サイトからターゲット プラットフォームに追加し、必要なプラグインをプラグイン プロジェクト / 機能プロジェクトに追加するだけです..」

しかし、私の知る限り、どの機能にどのプラグインが含まれているかを確認する簡単な方法 (Web サイトなど) はありません。たとえば、 を追加するにorg.eclipse.ui.views.properties.tabbedは、このプラグインがEclipse Platform SDK(とりわけ) 機能に含まれていることを知る必要があります。

これまで、どの機能にどのプラグインが含まれているかを簡単に見つける方法を見つけられませんでした。私は通常、プラグイン名をグーグル検索することから始め、プラグインにアクセスするためにどの機能を含める必要があるかを教えてくれる検索結果の中からチュートリアルなどを見つけようとします。もちろん、これは退屈な場合があります。

だから私の質問は、この情報をすばやく簡単に見つけるための、より良い、おそらく公式の (または公式の) 方法はありますか?

4

5 に答える 5

24

p2 コンソールを起動すると、p2 クエリ言語を使用して、バンドルに依存するすべての機能を見つけることができます。私の例はEclipse Juno(4.2)にあります:

  1. コンソール ビューで OSGi コンソールに切り替えます
  2. ss p2.console # コンソールのバンドル番号を見つける
  3. felix:start -t consoleBundleNumber

これで、p2 クエリを発行できます。現在のインストールのどの機能にorg.eclipse.jfaceが含まれているかを調べるには、次を使用できます。

osgi> provlpquery this "select(parent | parent.properties['org.eclipse.equinox.p2.type.group'] == true && parent.requirements.exists(rc | everything.exists(iu | iu.id == 'org.eclipse.jface' && iu ~= rc)))" true
org.eclipse.e4.rcp.feature.group 1.1.0.v20120521-2329-8yFTIGF3GGduEYqkQB9M3DKn
org.eclipse.e4.tools.css.spy.feature.feature.group 0.12.0.v20111206-1509-17B-7w3123161302752

どの機能にorg.eclipse.ui.views.properties.tabbedが含まれているかを調べるには、次を使用できます。

osgi> provlquery http://download.eclipse.org/releases/juno "select(parent | parent.properties['org.eclipse.equinox.p2.type.group'] == true && parent.requirements.exists(rc | everything.exists(iu | iu.id == 'org.eclipse.ui.views.properties.tabbed' && iu ~= rc)))" true
org.eclipse.amp.amf.feature.group 0.9.0.v20120528-0244
org.eclipse.bpel.feature.feature.group 1.0.1.v20120606-0845-CI
org.eclipse.jwt.feature.feature.group 1.2.0.v201205310546-7O7i-FK_Qj4QkVn3kW9q
org.eclipse.platform.feature.group 4.2.0.v20120528-1648-9JF7BHV8FyMteji0MoOeOuU6sAnxIeYtKNM1dK
org.eclipse.ptp.etfw.tau.feature.group 6.0.0.201206052145
org.eclipse.tcf.te.feature.feature.group 1.0.0.201206051725
org.eclipse.tcf.te.tcf.feature.feature.group 1.0.0.201206051725

この場合、org.eclipse.platform.feature.groupが最も正しいものです。

最初の例は、実行中の eclipse でプロファイルをクエリするため、provlpquery thisを使用します。2 番目の例は、外部の p2 リポジトリを指定しているため、provlquery repoを使用します。

p2 コンソールの詳細については、http://wiki.eclipse.org/Equinox_p2_Console_Users_Guideを参照してください。たくさんの黒魔術が行われています :-)

于 2012-06-13T12:13:12.417 に答える
4

この質問に答えることができる GUI ユーティリティp2browserもあります。

  • 関連する P2 リポジトリを追加する
  • IU、機能、または (Java) パッケージでフィルタリング
  • 関連する IU を右クリックし、[機能を含む開く] を選択します。

このユーティリティは、特定の Java パッケージを提供するプラグイン/バンドルの検索にも役立ちます。

于 2015-04-07T12:35:49.493 に答える
2

かなりの数の RCP アプリケーションを開発していますが、この問題に対する便利な解決策を見つけられませんでした。プラグインの優れたソースは、Eclipse IDE 自体です。依存関係を調べるには、プラグイン マニフェスト エディターの依存関係分析機能が非常に役立ちます。さらに、製品構成エディターの右隅にある [検証... ] ボタンを使用して、製品構成検証できます。プラグインが見つからない場合は、結果として一覧表示されます。

これまで試したことのない1 つの可能性は、ローカルにダウンロードされた機能やプラグインに頼るのではなく、1 つ以上のソフトウェア サイトを指定してターゲット プラットフォームを定義することです。

確かにこれはあなたが探していた答えではありませんが、この問題に対する本当の解決策はありません。RCP アプリケーションのターゲット プラットフォームを構築する際の負担を軽減するのに役立つツールと手段 (一部は上で説明) があります。

于 2012-04-12T13:46:10.867 に答える
1

基本的な考え方:すべての機能の定義を取得し、それを検索します。

より詳細な説明: http://divby0.blogspot.com/2010/10/howto-find-feature-that-c​​ontains-plugin.html

効果的な解決策のようには見えませんが、それでも何とかなります。

于 2012-04-26T23:57:21.400 に答える