正确的方法为Karaf生成功能文件?

时间:2017-03-24 19:24:15

标签: maven apache-karaf karaf

我正在尝试使用Maven(和NetBeans)创建一个Karaf程序集。我使用声明性服务创建我的包,但是我在创建功能文件时遇到了问题。我的部分问题是OSGi生成的错误消息。但我有一些更普遍的问题。

我发现我可以在创建我的捆绑包的项目中调用karaf-maven-plugin,并根据捆绑包的依赖关系生成看似全面填充的功能文件。 (方法1)

但是,我在某处读过,创建一个包含karaf-maven-plugin的功能文件通常只能在包含feature的项目中完成。如果我这样做,在我看来,我必须手动创建功能文件,这不是很有趣。 (方法2)

无论我使用哪种方法,我都无法成功生成包含除简单包之外的任何内容而没有任何依赖关系的Karaf程序集。我目前卡住尝试安装一个需要包装一些非OSGi依赖项的bundle。上面的方法1生成wrap内容(<feature>wrap:协议)。我得到的是以下错误:

Failed to execute goal org.apache.karaf.tooling:karaf-maven-plugin:4.1.0:assembly (default-assembly) on project EnoceanBridgeAdmin: Unable to build assembly: [wrap/0.0.0]

EnoceanBridgeAdmin是我尝试构建的karaf-assembly包装。它依赖于包含生成的特征文件的包(其中引用了wrap):

<dependency>
    <groupId>net.winnall.enocean.service.impl</groupId>
    <artifactId>EnoceanBridgeSASS.Impl</artifactId>
    <version>0.99.99</version>
    <type>xml</type>
    <classifier>features</classifier>
</dependency>

所以我的问题:

  1. 方法1是否正确使用?
  2. 我可以自动生成要使用方法2的要素文件吗?
  3. 在我对方法1或2进行排序后,错误消息是否会消失?
  4. 史蒂夫

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题。

  1. 方法1不起作用,因为karaf-maven-plugin<feature>生成了wrap个定义。这些导致上述错误。显然 - 至少使用Karaf 4.1.0 - wrap:协议用于没有事先<feature>定义的要素文件中。
  2. 因为karaf-maven-plugin的行为,方法2(自己编写要素文件)是唯一可行的选择。
  3. 是的,错误消息消失了: - )