Есть несколько вариантов.
Быстрый и грязный подход - поместить геттер для вашей глобальной переменной в активатор одного из ваших плагинов. Тогда вы просто получите свой глобальный, как:
SomePluginActivator.getDefault().getGlobalData()
Это имеет обратную сторону, заключающуюся в том, что ваши плагины тесно связаны, что несколько противоречит духу архитектуры плагинов.
Второй подход заключается в использовании службы рабочей среды. Это немного лучше, хотя в ваши плагины вводится зависимость от org.eclipse.ui
. В плагине, который предоставляет глобальные данные, создайте расширение org.eclipse.ui.services
. Вы определяете сервисный интерфейс и сервисную фабрику. Фабрика должна вернуть реализацию интерфейса. Ваши клиенты получают экземпляр глобальной службы, запрашивая указатель службы для экземпляра интерфейса службы. Платформа использует вашу фабрику для создания экземпляра сервиса:
IMyGlobalService service = (IMyGlobalService) PlatformUI.getWorkbench().getService(IMyGlobalService.class);
Это знакомый шаблон поиска сервисов. Преимущество этого подхода заключается в том, что потребители некоторых глобальных данных не должны знать, откуда они берутся. Для дополнительной гибкости вы можете объявить интерфейс в одном плагине, а фабрику и реализацию в другом, чтобы можно было менять реализации.
Третий подход - использовать точку расширения. Я сам не пробовал этого, но, похоже, вы должны иметь возможность объявить точку расширения в плагине, который предоставляет глобальные данные, а затем внедрить глобальные данные в плагины, которые его расширяют.
Последний подход заключается в использовании службы OSGi. Я наименее знаком с этим подходом. Вы бы написали сервис OSGi, а другие плагины использовали бы каркас OSGi, чтобы найти сервис. Это похоже на сервисы верстак выше, но он не использует Eclipse RCP напрямую. Вы также должны прочитать о шаблоне доски (предупреждение: ссылка PDF).