如何使用maven-bundle-plugin的bnd指令?

时间:2013-07-03 12:34:28

标签: maven osgi bnd maven-bundle-plugin

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

<-foo>bar</-foo>

我已经检查了official page的maven-bundle-plugin,他们说它应该以&#39; - &#39;角色也是:

  

指令 - 任何以&#39; - &#39;开头的指令字符被认为是一个指令,通知BND执行某些特殊处理,而不是复制到清单。

bundle goal description似乎也没有此信息。  执行一些特殊处理而不会复制到清单。

2 个答案:

答案 0 :(得分:8)

将' - '字符替换为'_'字符。这将有效:

<_foo>bar</_foo>

实际上在FAQ页面中含糊其词:

  

(这是POM中的&lt; _exportcontents&gt;因为标签不能以' - '开头)

这个improvement也可以在他们的问题跟踪器中找到。

答案 1 :(得分:5)

有另一种方法可以用较少的xml杂乱来定义bnd指令:

像这样配置插件:

<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 fileosgi.bnd file