通过BND将Maven POM放入OSGi包装器中?

时间:2012-09-06 16:41:02

标签: maven osgi bnd bndtools

我有一个我想在OSGi环境中使用的第三方JAR,但它没有适合OSGi的MANIFEST.MF。所以,我正在使用BND(好吧,BNDTools)来包装它。这个工作正常,但是:

我也希望能够轻松地将它与Maven(它也没有设置)一起使用,所以我想要包含一个描述其依赖关系的Maven POM。有没有办法通过BND做到这一点?这是我尝试过的:

我查看了各种Mavenized JAR的布局,发现它们似乎在META-INF / maven / groupId / artifactId中包含了POM。例如:

META-INF/maven/com.example/com.example.greatapilibrary/pom.xml.

所以,我做了一个POM并把它放在这样的地方,然后修改bnd.bnd以便:

-include: META-INF/maven/com.example/com.example.greatapilibrary/pom.xml

但生成的JAR不包含该文件。

我认为(但不是100%肯定)我可能误读BND关于“-include”的文档 - 它看起来可能是在生成的MANIFEST.MF中包含额外的清单指令,而不是包含额外的文件JAR。

但无论如何,有没有办法用BND完成我想做的事情?或者我是否必须使用另一个重新包装程序来使用POM创建JAR,然后使用BND重新包装 而不是使用它来重新包装原始JAR?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

尝试添加:

-includeresource: META-INF/maven/com.example/com.example.greatapilibrary/pom.xml=META-INF/maven/com.example/com.example.greatapilibrary/pom.xml 

到你的bnd.bnd

此链接解释了includeincluderesource之间的差异(与Include-Resource相同):http://bndtools.org/faq.html#whats-the-difference-between--include-and-include-resource