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

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

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

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

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

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

5 ответов

Если вы запустите консоль 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.

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

См. http://wiki.eclipse.org/Equinox_p2_Console_Users_Guide для получения дополнительной информации о консоли p2. Там происходит много черной магии:-)

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

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

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

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

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

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

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

Более подробное описание: http://divby0.blogspot.com/2010/10/howto-find-feature-that-contains-plugin.html

Не похоже на эффективное решение, но все же это что-то.

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

  1. создать новый общий проект в затмении
  2. добавить папку возможностей в этот проект (как папку ссылок)
  3. поиск в этом проекте все feature.xml с моим именем плагина

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

Другие вопросы по тегам