Подтвердить что ты не робот

Как узнать, какая функция содержит необходимый плагин на сайте загрузки Eclipse

При разработке приложения RCP на целевой платформе я (и другие) часто встречаются зависимости, которые необходимо добавить с сайта программного обеспечения Eclipse. Всякий раз, когда подключаемый модуль включен в мою среду IDE, но не на моей целевой платформе, и я пытаюсь запустить приложение из определения продукта, я получаю экран предупреждения, сообщая мне, что такой и такой пакет не может быть разрешен.

"Нет проблем, просто добавьте функцию, содержащую подключаемый модуль, с сайта загрузки Eclipse на целевую платформу и добавьте необходимый подключаемый модуль в проект Project/Feature Project Project, whathaveyou...."

Но, AFAIK, нет простого способа (например, веб-сайта) узнать, какая функция включает этот плагин. Например, чтобы добавить org.eclipse.ui.views.properties.tabbed, мне нужно знать, что этот плагин включен в функцию Eclipse Platform SDK (среди прочих).

До сих пор я не нашел простой способ узнать, какая функция содержит этот плагин. Обычно я начинаю с googling имя подключаемого модуля и пытаюсь найти учебное пособие или подобное среди результатов поиска, что может сказать мне, какую функцию включить, чтобы добраться до плагина. Конечно, это может быть утомительно.

Итак, мой вопрос: есть ли лучший, возможно, официальный (или официально) способ быстро и просто найти эту информацию?

4b9b3361

Ответ 1

Если вы запускаете консоль p2, вы можете использовать язык запросов p2 для поиска всех функций, зависящих от пакета. Мой пример приведен в Eclipse Juno (4.2):

  • переключиться на консоль OSGi в режиме консоли.
  • ss p2.console #, чтобы найти номер пакета консоли
  • 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.

Первый пример - запрос профилей в запущенном затмении, поэтому он использует provlpquery this. Второй пример - это внешний репозиторий p2, поэтому он использует provlquery repo.

Подробнее о консоли p2 см. http://wiki.eclipse.org/Equinox_p2_Console_Users_Guide. Там много черной магии: -)

Ответ 2

Существует также утилита GUI, которая может ответить на этот вопрос p2browser:

  • Добавить соответствующий репозиторий P2
  • Фильтр по IU, возможностям или (Java) пакету
  • Щелкните правой кнопкой мыши соответствующее IU и выберите "Открыть в том числе функции"

Утилита также полезна для поиска плагинов/пакетов, которые предоставляют определенный пакет Java.

Ответ 3

Несмотря на то, что я разрабатываю довольно много приложений RCP, я не нашел удобного решения для этой проблемы. Хорошим источником плагинов является сама Eclipse IDE. Чтобы узнать о зависимостях, я обнаружил, что функция Анализ зависимостей в Редакторе манифеста плагинов весьма полезна. Кроме того, можно проверить конфигурацию продукта с помощью кнопки "Проверить..." в правом углу редактора . Если плагины отсутствуют, они перечислены в результате.

Одна из возможностей, которую я до сих пор не пробовал, - определить целевую платформу , указав один или несколько сайтов программного обеспечения вместо того, чтобы полагаться на локально загруженные функции и плагины.

Конечно, это не тот ответ, который вы искали, но imho нет реального решения этой проблемы. Есть только инструменты и транспортные средства (частично описанные выше), которые помогают облегчить боль при построении целевой платформы приложения RCP.

Ответ 5

ok после многих ответов Google и выше, я сделал следующее

  • создать новый общий проект в eclipse
  • добавить в эту папку функции в этот проект (в виде папки с ссылками)
  • поиск в этом проекте все feature.xml с моим именем плагина

Я надеюсь, что это поможет и другим.