2013-07-03 27 views
4

如何使用maven-bundle-plugin的bnd指令指令? BND指令都开始用“ - ”字符,这是无效的XML标记:如何使用maven-bundle-plugin中的bnd指令?

<-foo>bar</-foo> 

我已经检查了official page Maven的束-插件,他们说,这应该与开始“ - ”字符:

指令 - 任何以' - '开头的指令都被认为是通知BND执行一些特殊处理并且不被复制到清单的指令。

bundle goal description似乎也没有这方面的信息。 执行一些特殊的处理,而不是复制到清单。

回答

8

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

<_foo>bar</_foo> 

它实际上是隐约在FAQ页面描述:

(这是< _exportcontents>在POM,因为标签不能以 ' - ')

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

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

+0

其实我现在用这个。问题是,-include本身就是一个bnd指令。因此,这个问题。提高,因为它是有帮助的。 – ceilfors