Как включить jar зависимости в пакет OSGi с помощью плагина пакета maven?

У меня есть совместимый с OSGi пакет (jar), в который я хочу добавить jar зависимости. Зависимость, которую я хочу добавить, связана с драйвером базы данных. Этот jar отсутствует в папке lib контейнера Karaf, который я использую, и нет возможности добавить его туда вручную. У меня есть доступ только к папке deploy, где я могу развернуть свои бандлы. Я использую плагин пакета maven для упаковки моего пакета. Итак, я хотел знать, есть ли способ добавить банку зависимостей в мой пакет. В настоящее время я добавляю банку вручную в пакет, открывая пакет в 7zip и добавляя банку, копируя ее в банку, и все работает нормально. Я пытался использовать тег <embed-dependency>, но после этого пакет не развертывается. Есть ли какой-либо способ сделать это?

Ниже приведена зависимость в pom.xml, которую я хочу добавить в комплект:

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.3.158</version>
    </dependency>

Ниже приведен тег сборки в pom.xml:

<build>
    <defaultGoal>install</defaultGoal>
    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Export-Package>
                        com.ct.service.userService.*,
                        org.h2.*
                    </Export-Package>
                    <Import-Package>
                        *,
                        org.codehaus.jackson.jaxrs
                    </Import-Package>
                    <Embed-Dependency>h2</Embed-Dependency>
                </instructions>
            </configuration>
        </plugin>
    </plugins>
</build>

Я получаю следующую ошибку, когда пытаюсь развернуть его:

ERROR: Bundle com.ge.dsp.userService [205] Error starting file:D:Karaf/deploy/userService-0.0.1-SNAPSHOT.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle com.ge.dsp.userService [205]: Unable to resolve 205.2: missing requirement [205.2] osgi.wiring.package; (osgi.wiring.package=org.apache.lucene.analysis))

org.osgi.framework.BundleException: Unresolved constraint in bundle com.ct.service.userService [205]: Unable to resolve 205.2: missing requirement [205.2] osgi.wiring.package; (osgi.wiring.package=org.apache.lucene.analysis)
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1868)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295)
    at java.lang.Thread.run(Thread.java:662)

person Rahul Bobhate    schedule 17.05.2013    source источник
comment
какое сообщение об ошибке вы получаете, когда пытаетесь развернуть пакет?   -  person DB5    schedule 17.05.2013
comment
@DB5, добавлено сообщение об ошибке в вопрос.   -  person Rahul Bobhate    schedule 17.05.2013


Ответы (1)


Похоже, мне нужно было развернуть h2-1.3.158.jar вместе с моим пакетом и добавить некоторые изменения в pom.xml следующим образом:

<build>
<defaultGoal>install</defaultGoal>
<plugins>
    <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
            <instructions>
                <Export-Package>
                    com.ct.service.userService.*,
                    <!--org.h2.*    No need to export these dependency -->
                </Export-Package>
                <Import-Package>
                    *,
                    org.codehaus.jackson.jaxrs,
                    org.h2               <!-- Needed to import the dependencies. -->
                </Import-Package>
                <!--<Embed-Dependency>h2</Embed-Dependency> No need of embedding -->
            </instructions>
        </configuration>
    </plugin>
</plugins>

person Rahul Bobhate    schedule 20.05.2013
comment
Не могли бы вы объяснить, что мне нужно было развернуть файл h2-1.3.158.jar вместе с моим пакетом? Я столкнулся с той же ошибкой, но простое редактирование pom.xml у меня не работает. - person kspviswa; 14.11.2016