我有一个我想在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?
提前感谢您的帮助。
答案 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
此链接解释了include
和includeresource
之间的差异(与Include-Resource
相同):http://bndtools.org/faq.html#whats-the-difference-between--include-and-include-resource