将非OSGi jar转换为OSGi包作为Maven构建过程的一部分

时间:2014-07-16 07:21:57

标签: maven cq5 osgi-bundle

在我们的CQ项目中,我们想要使用一些非osgi罐子。目前我们有一个单独的进程,而不是构建将这些jar转换为OSGi包(主要使用eclipse插件项目)。但作为Maven构建本身的一部分,有没有一种完美的方法来处理它? 这样整个过程对开发人员来说都是透明的[我在一些博客中看到了一些相关建议。但这也暗示要为此目的创建另一个项目。由于我们为项目使用多模块maven结构,是否建议添加模块以处理这些转换?]。

如果你能给我一些指示,那会很有帮助。

谢谢和问候,

3 个答案:

答案 0 :(得分:8)

您可以创建一个包含非OSGi JAR的包装器包dependencies with the default scope。然后按如下方式配置maven-bundle-plugin

  • 非OSGi依赖项应标记​​为embedded
  • 他们的Java包应该是exported
  • 如果非OSGi JAR本身具有某些依赖关系,您也可以包含它们或mark as ignored

所有链接都引用一个样本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文件。