Как сформировать.bnd файлы при использовании maven-bundle-plugin?

Я хотел бы построить компоненты OSGI, и мне сказали, чтобы использовать maven-bundle-plugin, Я начал с добавления этого в мой pom.xml:

        <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>3.0.0</version>
                <extensions>true</extensions>
                <configuration>
                    <obrRepository>NONE</obrRepository>
                    <instructions>
                        <_include>-bnd.bnd</_include>
                    </instructions>
                </configuration>
        </plugin>

Обратите внимание на .bnd файл, который передается <_include> тег. Я слышал, как люди говорили, что эти файлы должны храниться как минимум или даже пустыми, а затем следует наблюдать за тем, что необходимо для импорта / экспорта и т. Д. Именно здесь я запутался. У меня есть мой MANIFEST.MF файл, в котором я знаю, что импортировать и экспортировать. Тем не менее, мне нужно немного помочь, чтобы мой .bnd файлы работают. Щас пытаюсь с пустым .bnd файлы, и я не уверен, работает ли он так, как должен.

У кого-нибудь есть опыт работы с этим плагином и как я хочу, чтобы он работал?

Например, вот пример .bnd файл. Однако я не знаю, как он решил, что они должны импортировать / экспортировать.

На данный момент, когда я пытаюсь проверить .jar я получил

no main manifest attribute, in bundle-1.0.0.jar

ошибка, несмотря на то, что действительно MANIFEST.MF в .jar,

Обновление: я думал, что мог бы поделиться MANIFEST.MF что я имел ранее, который я хочу создать с помощью этого плагина сейчас.

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Just a Name
Bundle-SymbolicName: just.a.name.broker;singleton:=true
Bundle-Version: 1.0.0
Require-Bundle: org.apache.activemq,
 just.msg
Bundle-Activator: just.a.broker.Activator
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Import-Package: javax.naming,
 javax.xml,
 javax.xml.parsers,
 org.apache.log4j.xml,
 org.osgi.framework
Bundle-ClassPath: .
Export-Package: just.a.broker

Итак, чтобы иметь такой манифест, как мой .bnd файл похож? Или лучше включить свойства в плагин, чем передавать .bnd файл?

1 ответ

Решение

Ваш файл.bnd может выглядеть так:

Bundle-Activator: just.a.broker.Activator
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Require-Bundle: org.apache.activemq,\
  just.msg 

Import-Package: *,\
  javax.naming,\
  javax.xml,\
  javax.xml.parsers,\
  org.apache.log4j.xml,\
  org.osgi.framework

Bundle-ClassPath: .
Export-Package: just.a.broker

надеюсь это поможет.

Другие вопросы по тегам