org.eclipse.pde.build вне eclipse: отсутствует необходимый подключаемый модуль

Мне нужно создать Headless-Builder для старого проекта, где сборка и экспорт для этой функции были возможны только внутри графического интерфейса eclipse.

Мне удалось сделать FullBuild без графического интерфейса Eclipse. Для этого я написал Bundle, который импортирует проект и создает FullBuild. После этого я пытаюсь экспортировать проект в том же комплекте, но получаю следующие ошибки:

          !ENTRY org.eclipse.pde.build 4 5 2022-09-24 13:49:38.938
    !MESSAGE Processing inclusion from feature com.xyz.xyz1tWzoxsKKH.feature: Bundle com.xyz.xyz_1.1.0.qualifier failed to resolve.:
    Missing required plug-in org.apache.commons.lang3_3.1.0.
    Missing required plug-in com.google.guava_14.0.1.
    ...
    Host plug-in JavaSE_0.0.0 has not been found.

Если я устанавливаю свой пакет в eclipse и запускаю задание экспорта внутри из eclipse (OSGi HostConsole), он работает отлично. Но если я установлю свой пакет снаружи в OSGi:

          java -DbaseLocation=D:/eclipse   -Dosgi.bundles=.\org.apache.felix.gogo.shell_0.10.0.v201212101605.jar@start,.\org.apache.felix.gogo.command_0.10.0.v201209301215.jar@start,.\org.apache.felix.gogo.runtime_0.10.0.v201209301036.jar@start,.\org.eclipse.equinox.console_1.0.100.v20130429-0953.jar@start -jar org.eclipse.osgi_3.9.1.v20130814-1242.jar -console
    install file:...  /here I install all!! bundles eclipse has to in his plugin folder
    start org.eclipse.equionox.ds
    start com.mybuilder

Пакеты отсутствуют для процесса сборки pde, хотя я установил их все в новом OSGi-Env. И все зависимости разрешены. Как это возможно? org.eclipse.pde.build работает в том же OSGi-Env, где были установлены все пакеты. org.eclipse.pde.build их не видит.

Я даже пробовал с -DbaseLocation=D:/eclipse, чтобы org.eclipse.pde.build мог искать отсутствующие плагины в исходной установке eclipse, где работает мой Bundle, но даже таким образом сборка не удалась.

Может быть, один дополнительный совет: FullBuild проекта работает в обоих ENV, в eclipse и в моей отдельной установке OSGi, но вне eclipse мне нужно обходное решение для FullBuild, потому что:

          <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

не работает. Во время сборки я получаю много ошибок из-за отсутствующих зависимостей, поэтому мне пришлось изменить свой файл .classpath на такие записи, как:

          <classpathentry kind="lib" path="U:/BUILD/osgi/com.google.guava_14.0.1.jar"/>
    ...

С этими записями Fullbuild работает без проблем, но задание экспорта для этой функции завершается сбоем, потому что те же плагины будут пропущены. Я думаю, что это может быть просто небольшая вещь, которую я упустил в понимании того, как все это работает. Большое спасибо за чтение, и я рада каждому маленькому намеку.

1 ответ

Решение заключалось в том, чтобы поместить пакеты для установки в каталог «плагины». У меня не было каталога плагинов, и pde.core ищет их только в этом конкретном каталоге при создании цели. Вот и все. Почему -DbaseLocation с предустановленным eclipse в качестве цели не работал - не знаю. PDE Core, казалось, игнорировал этот параметр.

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