0

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

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

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

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?

提前感谢您的帮助。

4

1 回答 1

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

于 2012-09-06T18:36:47.710 回答