如何在使用maven-bundle-plugin时形成.bnd文件?

时间:2016-07-07 08:33:44

标签: maven osgi 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个文件,我不确定它是否正常工作。

有没有人有这个插件的经验以及我想让它工作的方式?

例如,here是一个示例.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 个答案:

答案 0 :(得分: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

希望这会有所帮助。