Разрешение зависимостей Eclipse-связки
В настоящее время я пытаюсь скомпилировать мои проекты Eclipse PDE. Для этого мне нужно собрать все зависимости из инструкций Require-Bundle, найденных в проектах и их зависимостях. Теперь я столкнулся с проблемой, что один из моих проектов терпит неудачу, если я хочу скомпилировать его, так как он ссылается на класс org.eclipse.swt.graphics.Point
отorg.eclipse.swt.win32.win32.x86
расслоение. Кажется, проблема в том, что зависимость от org.eclipse.swt.win32.win32.x86
не может быть решена.
Используя представление зависимостей затмения, я вижу, что org.eclipse.ui
зависит от org.eclipse.swt
а также org.eclipse.swt
зависит от org.eclipse.swt.win32.win32.x86
,
Вот мой вопрос:
Я не понимаю, как затмение знает, чтоorg.eclipse.swt
зависит от org.eclipse.swt.win32.win32.x86
, Файл манифеста org.eclipse.swt
не имеет Require-Bundle
(или другой информации, связанной с комплектомorg.eclipse.swt.win32.win32.x86
) заявление. Так как это узнать??
Спасибо за помощь,
Тим
1 ответ
Это своего рода перевернутая зависимость, потому что org.eclipse.swt.win32.win32.x86
это фрагментный пакет, который размещен на базе org.eclipse.swt
связывает и расширяет свой API. Базовый комплект SWT необычен, потому что он вообще не содержит кода... все находится в специфичных для платформы фрагментах.
Это работает в PDE, потому что базовый комплект содержит заголовок "Eclipse-ExtensibleAPI: true". Когда PDE видит этот заголовок, он ищет фрагменты, которые могут добавить API в базовый комплект. К сожалению, если вы пишете какой-то процесс сборки для автоматизации сборок PDE, вам нужно будет повторить ту же логику.
К счастью, во время сборки вам не нужно беспокоиться о том, для какой платформы вы компилируете: сигнатуры всех классов и методов одинаковы для поддерживаемых платформ, поэтому вы можете легко скомпилировать фрагмент Win32, даже если вы компилируете на Mac (например).