Tycho: «Export-Package» удаляется из MANIFEST.MF

Мы переносим нашу систему сборки с Ant на Maven, и в настоящее время я работаю над созданием подключаемых модулей Eclipse. Проведя небольшое исследование, я решил использовать для сборки плагин Tycho Maven. Это было непросто, но я решил большинство проблем, кроме этой.

Я получил ошибки при попытке построить зависимые плагины. Предположим, у меня есть плагин A и плагин B, который зависит от A (использует классы из A). Оба этих плагина манифестируются первыми (и имеют <packaging>eclipse-plugin</packaging>).

Когда я попытался собрать «B», я получил следующую ошибку сборки:

[ERROR] Access restriction: The type Constants is not accessible due to restriction on class pathentry C:/maven/repository/...

Я проверял все несколько раз, но только позже понял, что мне следует взглянуть на MANIFEST.MF файла A.jar в моем репозитории, - и это было кейс. Export-Package по какой-то причине был удален из MANIFEST-MF плагина A. Я вручную добавил отсутствующие экспорты в MANIFEST.MF в локальном репозитории Maven (просто для того, чтобы убедиться, что это реальная проблема!), и сборка плагина B прошла успешно!

Итак, вопрос: как настроить Tycho не удалять Export-Package во встроенных плагинах (или настроить, какие пакеты следует экспортировать)?


person Art Licis    schedule 19.04.2012    source источник


Ответы (1)


Оказалось, что Tycho полагался на порядок свойств MANIFEST.MF. В моем случае Export-Package было помещено после Import-Package, и в этом случае Tycho отбросил все свойство Export-Package при создании плагина и повторном создании MANIFEST.MF. Как только Export-Package был помещен перед Import-Package, все заработало нормально, и целевой файл MANIFEST.MF был сгенерирован, как и ожидалось. Пробная версия Tycho: 0.14.0, 0.14.1

ИЗМЕНИТЬ

Об ошибке сообщили в Eclipse Bugzilla: 'Export-Package' удаляется из целевого МАНИФЕСТА. MF, если он расположен после «Import-Package» в предоставленном MANIFEST.MF

ИЗМЕНИТЬ2

См. подробности об отправленной ошибке. Истинная причина заключалась в отсутствующем переносе строки, что формально является явной ошибкой. Tycho проигнорировал последнюю строку во время синтаксического анализа, поэтому Export-Package, которая была последней строкой, не была включена в целевой манифест.

person Art Licis    schedule 19.04.2012
comment
Я думаю, вы должны сообщить об этом как об ошибке. - person Robert Munteanu; 19.04.2012