Как узнать, какая функция содержит необходимый плагин на сайте загрузки Eclipse
При разработке приложения RCP на целевой платформе я (и другие) часто встречаются зависимости, которые необходимо добавить с сайта программного обеспечения Eclipse. Всякий раз, когда подключаемый модуль включен в мою среду IDE, но не на моей целевой платформе, и я пытаюсь запустить приложение из определения продукта, я получаю экран предупреждения, сообщая мне, что такой и такой пакет не может быть разрешен.
"Нет проблем, просто добавьте функцию, содержащую подключаемый модуль, с сайта загрузки Eclipse на целевую платформу и добавьте необходимый подключаемый модуль в проект Project/Feature Project Project, whathaveyou...."
Но, AFAIK, нет простого способа (например, веб-сайта) узнать, какая функция включает этот плагин. Например, чтобы добавить org.eclipse.ui.views.properties.tabbed
, мне нужно знать, что этот плагин включен в функцию Eclipse Platform SDK
(среди прочих).
До сих пор я не нашел простой способ узнать, какая функция содержит этот плагин. Обычно я начинаю с googling имя подключаемого модуля и пытаюсь найти учебное пособие или подобное среди результатов поиска, что может сказать мне, какую функцию включить, чтобы добраться до плагина. Конечно, это может быть утомительно.
Итак, мой вопрос: есть ли лучший, возможно, официальный (или официально) способ быстро и просто найти эту информацию?
Ответы
Ответ 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.
Ответ 4
Основная идея. Получите определения функций all, а затем выполните поиск по ней.
Более подробное описание:
http://divby0.blogspot.com/2010/10/howto-find-feature-that-contains-plugin.html
Не похоже на эффективное решение, но все же это что-то.
Ответ 5
ok после многих ответов Google и выше, я сделал следующее
- создать новый общий проект в eclipse
- добавить в эту папку функции в этот проект (в виде папки с ссылками)
- поиск в этом проекте все feature.xml с моим именем плагина
Я надеюсь, что это поможет и другим.