Eclipse RCP: проблема создания продукта, для которого нужны 2 разные версии плагина - PullRequest
2 голосов
/ 26 января 2009

По соображениям совместимости с внешним продуктом мне нужно создать приложение RCP, которое должно включать 2 версии плагина. Плагин org.apache.lucene, который в настоящее время 1.9.1 в затмении 3.4. Мне нужна версия 1.4.103, чтобы быть совместимой с другим приложением. Я должен сказать, что мое приложение RCP изначально разрабатывалось с использованием eclipse 3.2, и после обновления до 3.4 эта проблема возникла.

Во время разработки и тестирования мое приложение работало нормально. Мне пришлось добавить плагин 1.4.103 вручную в конфигурации Run, но в остальном он работал нормально.

Сейчас я нахожусь на этапе сборки продукта и не могу найти способ добавить 2 версии плагина Lucene на вкладке Конфигурация мастера продукта. Во время выполнения ошибка указывает, что версия Lucene 1.4.103 отсутствует.

Ответы [ 3 ]

2 голосов
/ 02 октября 2009

Я довольно подробно изучил эту проблему, касающуюся продукта, который включал BIRT, и, таким образом, унаследовал требование для 2 разных версий javax.wsdl. После прочтения множества вики-страниц, записей об ошибках и т. Д. Я обнаружил, что это проблема в процессе сборки PDE (среды разработки плагинов). Теперь проблема была исправлена ​​в Eclipse 3.5. Запись в bugzilla: https://bugs.eclipse.org/bugs/show_bug.cgi?id=265438.

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

2 голосов
/ 26 января 2009

Учтите, что в OSGi пакеты не имеют понятия о прямой зависимости между пакетами.
Вместо этого в каждом пакете перечислены службы и пакеты, которые он ожидает зарегистрировать в других пакетах через заголовки «Import-Package» и «Import-Service».

На противоположной стороне в пакете перечислены сервисы и пакеты, которые он планирует экспортировать через «Export-Package» и «Export-Service». Таким образом, нет жестких зависимостей между реализациями пакета. Пока какой-то пакет предоставляет ваши импортированные пакеты, ваш пакет будет счастлив.

В качестве иллюстрации WTP (Платформа веб-инструментов) имеет дублированные плагины javax.wsdl :


Теперь вы должны убедиться, что вы преобразовали свой проект плагина 3.2 с помощью подменю «Инструменты PDE» (щелкните правой кнопкой мыши по вашему проекту).

Затем вы можете определить продукт для вашего rcp-приложения , в котором вы определите конфигурацию ( target ) для среды выполнения, а не для разработки. цель.

0 голосов
/ 23 марта 2009

как насчет того, чтобы скомпилировать этот плагин из исходников под другим именем? или написать оболочку для старых функций плагинов для новых?

...