【问题标题】:How to use bnd directives from maven-bundle-plugin?如何使用来自 maven-bundle-plugin 的 bnd 指令?
【发布时间】:2013-07-01 03:38:01
【问题描述】:

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

<-foo>bar</-foo>

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

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

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

【问题讨论】:

    标签: maven osgi bnd maven-bundle-plugin


    【解决方案1】:

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

    <_foo>bar</_foo>
    

    其实在FAQ页面里有模糊的描述:

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

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

    【讨论】:

      【解决方案2】:

      还有一种替代方法可以定义 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 fileosgi.bnd file

      【讨论】:

      • 其实我现在正在使用这个。问题是,-include 本身就是一个 bnd 指令。因此问题。有帮助就加起来。
      猜你喜欢
      • 2016-11-09
      • 2015-06-12
      • 2011-03-06
      • 2020-03-02
      • 1970-01-01
      • 2020-05-11
      • 2016-10-03
      • 2017-06-15
      • 2010-11-19
      相关资源
      最近更新 更多