我正在尝试使用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>
所以我的问题:
史蒂夫
答案 0 :(得分:0)
我自己解决了这个问题。
karaf-maven-plugin
为<feature>
生成了wrap
个定义。这些导致上述错误。显然 - 至少使用Karaf 4.1.0 - wrap:
协议用于没有事先<feature>
定义的要素文件中。karaf-maven-plugin
的行为,方法2(自己编写要素文件)是唯一可行的选择。