JBoss Fuse против стандартной зависимости Maven

Я только изучаю OSGi, JBoss Fuse (6.1) и Karaf. Как я могу использовать стандартные (не комплектные) зависимости Maven без их изменения?

У меня есть простой проект пакета Maven. Это зависит от некоторых сторонних библиотек. Он использует их через свой blueprint.xml. Я понимаю, что если manifest.mf помечает пакеты в записи Import-Package, то в его manifest.mf должен быть установлен пакет с Export-Package. В моем случае, если я установлю эти стандартные проекты Maven, они не будут экспортировать необходимые пакеты. Итак, во время установки у меня появилось сообщение об ошибке «Неразрешенное ограничение в пакете». Может ли плагин Maven Bundle или Shade решить эту проблему? Или, если они не могут, какой самый элегантный способ разрешить зависимости?

Где-то я читал, что Jboss Fuse может разрешать зависимости из репозитория Maven. Можно ли как-то использовать этот механизм?

Спасибо!


person Gábor    schedule 15.03.2015    source источник


Ответы (3)


Тем временем я нашел почти хорошее решение: с пространством имен/префиксом wrap: Fuse автоматически генерирует пакет во время установки:

osgi:install -s wrap:mvn:cglib/cglib/2.2.2

Но мне все равно приходится устанавливать каждую зависимость вручную. Есть ли способ автоматизировать установку зависимостей?

Спасибо!

person Gábor    schedule 17.03.2015

Используйте заголовок манифеста Bundle-ClassPath. Убедитесь, что все ваши зависимости maven доступны в окончательном файле jar в одном каталоге с именем «lib». (Этого можно добиться с помощью плагина ресурсов maven, который копирует зависимости maven в любой выходной каталог).

Используйте maven-bundle-plugin и настройте атрибут Bundle-ClassPath манифеста пакета с его элементом. Добавьте путь к папке lib, чтобы все простые ванильные банки были доступны как часть пути к классам пакета.

person Shailesh Pratapwar    schedule 01.06.2015

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

<features>
    <feature name="wrap_features" version="1.0">
        <bundle>mvn:org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1</bundle>
        <bundle>wrap:mvn:org.jdbi/jdbi/2.70</bundle>
        <bundle>wrap:mvn:com.microsoft/sqljdbc4/4.2</bundle>
        <bundle>wrap:mvn:org.springframework/spring-web/4.2.4.RELEASE</bundle>
        <bundle>wrap:mvn:org.springframework.security/spring-security-core/4.0.3.RELEASE</bundle>
        <bundle>mvn:com.doi.ws/mssql-fragment/1.0.0</bundle>
        <bundle>mvn:com.doi.ws/mssql-impl/1.0.0</bundle>
        <bundle>mvn:com.doi.ws/doi-services/1.0</bundle>
    </feature>
</features>

Вы устанавливаете функции перед развертыванием проекта на сервере Fuse с помощью команды functions.

person Prashant Khanal    schedule 06.01.2016