Как я могу исправить плагин Eclipse, используя плагин фрагментов, и развернуть его в моем продукте Eclipse?

Я пытаюсь применить патч к существующему плагину, используя плагин фрагмента, как описано здесь:

Шаги по использованию фрагментов для исправления плагина - Eclipsepedia

Патч к плагину хоста включает замену одного файла класса обновленным файлом класса. Но я не понимаю концепцию в разделе Изменение параметров манифеста пакета хоста с шагов 5) до 11). Здесь он предлагает вам изменить плагин хоста. Я думал, что вся идея в том, что вам не нужно трогать плагин хоста - это фрагмент, который вы развернете, который добавляет патч?

Мой продукт состоит из платформы eclipse и функций org.eclipse.cdt, а также моих собственных плагинов, использующих cdt. Это плагин org.eclipse.cdt.core, который я хотел бы исправить.

Я выполнил шаги в вики eclipse и создал свой проект фрагмента, содержащий пакет и класс, который я хочу исправить в плагине хоста. Я построил это в Maven, и когда я запускаю этот продукт, я вижу, что мой фрагмент-плагин активен, но класс, который он содержит, не вызывается; оригинальный класс плагина хоста

Я предполагаю, что проблема в том, что модифицированный хост-плагин отсутствует в моем развернутом продукте. В руководство по фрагментам не включены какие-либо шаги по рекомендации по развертыванию плагина хоста, и я не уверен, как / почему это необходимо.

(В прошлом я успешно использовал патч для таких вещей, но создавал его только с помощью PDE - я не мог заставить свой патч для сборки под Maven - вот почему я изучаю использование фрагментов, чтобы увидеть если я могу заставить их строить под Maven.)

ОБНОВЛЕНИЕ *: Я создаю свою сборку, используя плагин Tycho для Maven Tycho - Построение плагинов Eclipse с maven.

Спасибо за ссылку на "OSGi Core Release 5 Спецификация". Это было полезное чтение.

Так что, если я правильно понимаю, фрагмент может перекрывать свой класс только над плагином хоста, если плагин хоста уже "подготовлен" для исправления фрагментом. Это включает в себя изменение манифеста хост-плагина. В частности: 1. добавьте новую библиотеку и переместите ее выше '.' пакет. Удалите эту библиотеку из свойств сборки; библиотека является просто ссылкой и не должна создаваться плагином хоста. + добавить Eclipse-ExtensibleAPI: true в файл manifest.mf + увеличить номер версии.

Похоже, что в моем случае, если бы я захотел залатать плагин org.eclipse.cdt.core, используя фрагмент, мне пришлось бы предоставить подготовленную версию плагина org.eclipse.cdt.core плюс мой плагин фрагмента.

*: не уверен в ответе на этикет; не хватает репутации, чтобы делать много вещей. Поле для комментариев принимает только небольшое количество символов.

1 ответ

Существует более интуитивное объяснение (по крайней мере для меня) уровня пакета OSGi Fragment, которое в основном показывает результат того, чего достигают операции GUI в Eclipse. Согласно этому Bundle-ClassPath в манифесте хоста должен быть адаптирован, если вы хотите заменить, или лучше: наложение существующего класса.

См. Также спецификацию OSGi Core Release 5, 3.14 Связки фрагментов, стр.69 и далее.

Вы создали свой пакет с плагином Maven Bundle, не так ли?

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