Развертывание пакета OSGi, созданного Maven, в ServiceMix: неразрешенное ограничение в пакете

Я могу без проблем собрать свои проекты "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>

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


person Akku    schedule 02.02.2011    source источник


Ответы (2)


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

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

<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
person Raghuram    schedule 02.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, чтобы плагин мог сгенерировать правильный.

person Akku    schedule 02.02.2011