4

如何使用来自 maven-bundle-plugin 的 bnd 指令指令?bnd 指令以“-”字符开头,这是一个无效的 xml 标记:

<-foo>bar</-foo>

我检查了maven-bundle-plugin 的官方页面,他们说它也应该以“-”字符开头:

指令 - 任何以“-”字符开头的指令都被认为是通知 BND 执行某些特殊处理的指令,并且不会复制到清单中。

捆绑目标描述似乎也没有此信息。执行一些特殊处理并且不会复制到清单中。

4

2 回答 2

8

将 '-' 字符替换为 '_' 字符。这将起作用:

<_foo>bar</_foo>

它实际上在FAQ页面中进行了模糊的描述:

(这是 POM 中的 <_exportcontents>,因为标签不能以“-”开头)

这种改进也可以在他们的问题跟踪器中找到。

于 2013-07-03T12:34:28.213 回答
5

有另一种方法来定义 bnd 指令,减少 xml 混乱:

像这样配置插件:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <extensions>true</extensions>
    <configuration>
        <instructions>
            <_include>-osgi.bnd</_include>
        </instructions>
    </configuration>
</plugin>

并提供一个包含说明的文件(此处为:osgi.bnd),例如

 Import-Package: !javax.servlet,\
  !org.apache.avalon.framework.logger,\
  org.apache.commons.collections;version="[1.0,2)",\
  org.apache.commons.collections.comparators;version="[1.0,2)",\
  org.apache.commons.collections.keyvalue;version="[1.0,2)",\
  org.apache.commons.collections.list;version="[1.0,2)",\
  org.apache.commons.collections.set;version="[1.0,2)",\
  !org.apache.log,\
  !org.apache.log4j,\
  *
 Export-Package: *

备注:文件名前的_include标签减号!

一个真实的例子可以在这里找到:

pom.xml 文件osgi.bnd 文件

于 2013-07-10T15:13:23.933 回答