Развертывание встроенного пакета Maven OSGi в ServiceMix: «Неразрешенное ограничение в пакете ...» - PullRequest
0 голосов
/ 02 февраля 2011

Я могу создавать свои проекты "samba.interfaces" и "samba.message" без проблем.Но когда я пытаюсь запустить пакет "samba.message" в ServiceMix (требуется пакет "samba.interfaces", содержащий пакет de.samba.common), я получаю следующую ошибку:

Error executing command: Unresolved constraint in bundle message [195]: module; 
(&(bundle-symbolic-name=de.samba.common)(bundle-version>=0.0.1))

для чего используется символическое имя?Должен ли он быть таким же, как основной пакет?Это часть POM, которая определяет пакет сообщений:

<plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
             <version>2.2.0</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-Activator>de.samba.message.Activator</Bundle-Activator>
                    <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
                    <Bundle-Name>SAMBA Message</Bundle-Name>
                    <Bundle-Version>1.0.0</Bundle-Version>
                    <Import-Package>
                        javax.jws,
                        javax.wsdl,
                        javax.xml.bind,
                        javax.xml.bind.annotation,
                        javax.xml.namespace,
                        javax.xml.ws,
                        META-INF.cxf,
                        META-INF.cxf.osgi,
                        org.apache.cxf.endpoint,
                        org.apache.cxf.bus,
                        org.apache.cxf.bus.spring,
                        org.apache.cxf.bus.resource,
                        org.apache.cxf.configuration.spring,
                        org.apache.cxf.resource,
                        org.apache.cxf.service.model,
                        org.apache.cxf.jaxws,
                        org.apache.cxf.transport.http_osgi,
                        org.springframework.beans.factory.config,
                        org.springframework.beans.factory.xml,
                        org.springframework.core.io,
                        org.springframework.beans.factory, 
                        org.springframework.context.support,
                        org.springframework.beans, 
                        org.springframework.context, 
                        org.osgi.framework,
                        org.apache.log4j,
                        de.samba.common.auditingcontrol.*,
                        de.samba.common.collect.*,
                        de.samba.common.message.*,
                        de.samba.common.repository.*,
                        de.samba.common.security.*,
                        de.samba.common,
                        *
                    </Import-Package>
                    <Export-Package>de.samba.message.*</Export-Package>
                    <Private-Package>

                    </Private-Package>
                    <!--
                    <DynamicImport-Package>*</DynamicImport-Package>
                    -->
                </instructions>

Есть идеи, что может вызвать эту ошибку?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2011

Хорошо, я сам нашел проблему.Ошибка при выполнении команды: неразрешенное ограничение в сообщении пакета [195]: модуль;(& (bundle-symbolic-name = de.samba.common) (bundle-version> = 0.0.1)) было совершенно неожиданным и возникло из-за наличия файла MANIFEST.MF внутри src / main / resources / META-INFэто обычно описывает информацию о пакете, если вы занимаетесь разработкой плагина / OSGi.Похоже, что плагин Maven BND включает этот файл и генерирует ТОЛЬКО новую информацию, если его там нет.

Итак, проблема была решена после удаления src / main / resources / META-INF / MANIFEST.MF, так что плагинможет генерировать правильный.

0 голосов
/ 02 февраля 2011

Я не очень разбираюсь в OSGI, но имею следующие наблюдения.

Документация определяет способ вычисления <Bundle-SymbolicName>. В их Примере реального мира они, похоже, не имеют projectId.

<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
...