Пещера Караф против org.apache.felix.bundlerepository
Добрый день.
Я пытаюсь получить преимущества OBR в своем приложении. Я взял Karaf Cave (4.0.0) в качестве реализации OBR и org.apache.felix.bundlerepository (2.0.4) в качестве клиента OBR. Я успешно настроил сам репозиторий, но не могу его правильно использовать. Проблема: когда я устанавливаю пакет через OBR и все его зависимости уже установлены во время выполнения OSGI, он устанавливается успешно. Но если некоторые требования отсутствуют, я получил ошибку "Неудовлетворенные требования", что странно, поскольку я точно знаю, что все ресурсы, которые удовлетворяют этим требованиям, присутствуют в дескрипторе OBR, и все ссылки на них действительны.
Почему они не разрешаются автоматически? Как настроить клиент OBR для работы с Karaf Cave?
Я также попробовал реализацию OBR от Sonatype Nexus (плагин OBR) и обнаружил, что дескриптор OBR, сгенерированный Cave, и дескриптор, сгенерированный Nexus, отличаются. Более того:
- генерируемый Cave соответствует спецификациям OSGI Compendium
- генерируемый Nexus нет, но он работает как шарм с org.apache.felix.bundlerepository - проблема не воспроизводится.
Я полностью сбит с толку.
Последовательность шагов для воспроизведения проблемы (воспроизведена на Apache Karaf 4.0.0):
1) Установка пещеры Караф:
feature:repo-add cave
feature:install cave-server cave-http
2) Создание пещерного хранилища:
cave:create-repository test
cave:proxy-repository test file:///path/to/some/local/maven/repo
- На этом этапе я могу успешно получить дескриптор OBR из http://localhost:8181/cave/http/test-repository.xml
3) Установите клиент OBR и зарегистрируйте "тестовый" репозиторий пещер от Karaf:
feature:install obr
obr:url-add http://localhost:8181/cave/http/test-repository.xml
4) Попробуйте развернуть некоторые ресурсы OBR с помощью obr:deploy