在我们的CQ项目中,我们想要使用一些非osgi罐子。目前我们有一个单独的进程,而不是构建将这些jar转换为OSGi包(主要使用eclipse插件项目)。但作为Maven构建本身的一部分,有没有一种完美的方法来处理它? 这样整个过程对开发人员来说都是透明的[我在一些博客中看到了一些相关建议。但这也暗示要为此目的创建另一个项目。由于我们为项目使用多模块maven结构,是否建议添加模块以处理这些转换?]。
如果你能给我一些指示,那会很有帮助。
谢谢和问候,
散
答案 0 :(得分:8)
您可以创建一个包含非OSGi JAR的包装器包dependencies with the default scope。然后按如下方式配置maven-bundle-plugin
:
所有链接都引用一个样本pom.xml
来完成这件事 - 它将非OSGi ActiveMQ JAR及其依赖项包装为OSGi包。
答案 1 :(得分:3)
您可以使用 p2-maven-plugin 自动将非OSGi jar包装到OSGi包中。它将从您的jar创建一个有效的P2存储库。唯一的缺点是,你必须两次调用maven:首先创建repo然后再使用它。该插件可在此处找到:https://github.com/reficio/p2-maven-plugin
答案 2 :(得分:2)
一个很好的参考pom.xml:https://github.com/Adobe-Consulting-Services/com.adobe.acs.bundles.twitter4j/blob/master/bundle/pom.xml
上面的链接将twitter4j jar包装成osgi包。检查两次导出的内容,不导出任何不必要的包。
如果你想嵌入一个taglib或者也需要嵌入META-INF文件夹,请参阅下面的链接作为例子:https://github.com/apache/sling/blob/trunk/bundles/scripting/jsp-jstl/pom.xml
有些jar也是OSGi包,所以在你打包之前,从maven central下载它并检查jar文件中的MANIFEST.MF文件。