Разрешение зависимостей 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 (например).

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