我想构建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
文件?
答案 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
希望这会有所帮助。