Как добавить свой фрагмент в список необходимых плагинов на существующем плагине - PullRequest
1 голос
/ 20 апреля 2009

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

У меня две проблемы. Если я импортирую свой фрагмент как файл jar, я не смогу увидеть изменения, которые я сделал, поскольку плагин, запущенный как приложение eclipse, приводит к ClassNotFoundException

Чтобы преодолеть это, я связываю дополнительный источник (фрагмента) с существующим проектом плагина. Однако ссылка использует абсолютный путь и делает ее непригодной для развертывания.

Я хочу иметь возможность упаковывать плагин с модификацией кода и иметь возможность "зависеть" от моего кода фрагмента. Есть ли способ добавить свой фрагмент в качестве зависимости?

Например:

Plugin Project I am changing : org.eclipse.*.editor
it depends on org.eclipse.*.edit

I have a fragment mydomain.*.edit which has org.eclipse.*.edit as host plugin

I want org.eclipse.*.editor to pick up mydomain.*.edit 
instead of org.eclipse.*.edit

ps: я также попытался упаковать файл jar для mydomain. *. Редактировать в каталоге плагинов и попытаться найти его оттуда, он не отображается в списке, когда я нажимаю добавить необходимые плагины на вкладке зависимости в файле plugin.xml редактора org.eclipse. *.

Пожалуйста, дайте мне знать, если я не достаточно ясен, я постараюсь перефразировать его.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 08 мая 2009

Если я правильно понимаю, что вы хотите сделать, я не думаю, что это возможно. Вам придется попробовать другой способ.

Плагины имеют зависимости от других плагинов. Фрагменты не существуют как отдельные объекты времени выполнения, а только как расширения плагина. Таким образом, ваш плагин может ссылаться только на плагин «редактор».

Классы, предоставленные фрагментом, не могут (и не должны) быть доступны напрямую. Они могут быть возвращены исходным плагином (A), если они реализуют исполняемое расширение, предоставляемое плагином A.

Если вы ссылаетесь на код фрагмента из другого плагина (B), классы будут загружены загрузчиком классов плагина B и будут отличаться от тех, которые загружаются плагином A.

Какова цель вашего фрагмента? Хотите получить доступ к внутреннему коду в плагине A? Хотите расширить редактор затмений?

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

[Изменить] Может быть, эта ссылка объяснит лучше: FAQ по Eclipse

Надеюсь, это поможет, Влад

0 голосов
/ 18 мая 2009

Спасибо, Влад, Ваше объяснение было очень полезно. В отличие от архитектуры на основе расширений, которая действительно предназначена для фрагментов, мне пришлось изменить определенный компонент в редакторе, который не был представлен как часть расширения. Эта модификация ссылалась на внешний проект, который я создал как фрагмент, но мог быть обычным java-проектом, упакованным в jar-файл, который я мог бы поместить в путь к классам редактора.

Мне удалось решить проблемы с зависимостями, поместив файл jar в путь к классам, однако, когда я экспортирую плагины и связанные плагины в виде файлов jar и помещаю их в каталог dropin, он не устанавливается правильно. (Кроме того, размещение файлов JAR в каталоге плагинов)

Редактор Eclipse, который я пытаюсь изменить, использует проект EMF. Я сохранил проект EMF в порядке рабочего пространства для разрешения зависимостей редактора. Однако, когда я заменяю файлы jar EMF, связанные с eclipse, файлами в рабочей области, файлы, которые я хочу редактировать, распознаются неправильно.

Есть ли другой способ сделать это?

...