我有一个第三方JAR,我想在OSGi环境中使用它,但它没有适合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中包含了额外的manifest指令,而不是在JAR中包含额外的文件。
但无论如何,有什么方法可以实现我想做的事情吗,使用BND?或者我必须使用另一个重写程序来创建一个带有POM的JAR,然后使用BND来重写,而不是使用它来重写原始JAR?
提前感谢您的帮助。
只需尝试添加:
-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---include和include资源之间的区别