繁体   English   中英

如何从jar库创建OSGi包?

[英]How to create OSGi bundle from jar library?

如何从jar库创建OSGi包?

如果您正在使用eclipse:有一个向导。

它允许您选择多个jar库并创建包含这些jar的插件项目(即OSGi包)。

你可以在这里找到它:

File -> New -> Other ... -> Plug-in from Existing jar Archives.

替代文字

原则上,您只需要将OSGi元数据添加到清单中

eclipse有一个bundle创建者,它提供了一种非常实用的方法来添加这些条目,这些条目应该是Plugin Dev Toolkit的一部分。

这篇文章详细介绍了该过程以及如何使用Bnd工具,maven等进行操作。

我个人非常喜欢pax工具 它是基于命令行的,但非常实用。 要创建现有jar的OSGi包,可以使用bnd工具

首先查看是否可以从存储库中找到启用osgi的库版本

  1. SpringSource http://www.springsource.com/repository
  2. Fusesource http://repo.fusesource.com/

如果找不到OSGi启用的版本。 您可以继续使用pax工具 - PaxConstruct或使用aQute的Bnd工具

  • 从现有JAR存档创建新的插件项目。

在此输入图像描述

  • 添加要导出的jar文件

在此输入图像描述

  • 单击“下一步”并命名项目。

在此输入图像描述

  • 注意:
  • 确保在目标平台中选择OSGI框架。
  • 将JAR压缩文件解压缩到项目取消选择 - >取消选择它,将导出JAR的所有包

  • 如果解压缩JAR包到项目选中 ,那么你就需要手动所需的软件包出口的MANIFEST.MF文件。

点击完成。 您将在工作区中找到名为transport-5.1.1的项目。 您也可以验证,JAR的所有包都在MANIFEST.MF文件中导出。

Eclipse Bundle Recipe项目提供了一种基于Maven的方法,用于将OSGi元数据添加到从Maven存储库中使用的JAR。

它的核心是它使用了bnd工具 这个工具就像一把瑞士军刀。 它分析jar和类文件并正确计算包导入和导出。 你应该使用bnd自己转换专有的罐子。 可以在Maven Central中找到

迟到派对:

如果您正在使用Gradle ,则可以在应用osgi-run插件时将jar添加为项目的正常依赖项。

osgi-run插件将透明地将jar包装成一个包,导出其中的每个包并计算其所有导入。 由于Gradle将知道jar的传递依赖性,如果有必要,它也会对它们做同样的事情。

jar将成为OSGi运行时osgi-run创建的一部分,然后您可以使用gradle runOsgigradle createOsgi ,然后执行run.shrun.bat脚本。

当然,实际包装是由OSGi世界的瑞士刀Bnd完成的。

如果要配置包装的发生方式(通常应该导入/导出的内容),可以在Gradle构建文件中轻松完成,有关详细信息,请参阅文档

例:

wrapInstructions {
    // use regex to match file name of dependency
    manifest( "c3p0.*" ) {
        // import everything except the log4j package - should not be needed
        instruction 'Import-Package', '!org.apache.log4j', '*'
        instruction 'Bundle-Description', 'c3p0 is an easy-to-use library for making traditional ' +
                'JDBC drivers "enterprise-ready" by augmenting them with functionality defined by ' +
                'the jdbc3 spec and the optional extensions to jdbc2.'
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM