2010-08-29 92 views
20

如何从jar库创建OSGi包?如何从jar库创建OSGi包?

+0

[此问题](http://stackoverflow.com/questions/9819090/how-to-convert-jar-to-osgi-bundle-using-eclipse-and-bndtools)是相关的。 – 2012-08-08 08:52:38

回答

25

如果你使用eclipse:有一个向导。

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

你可以在这里找到:

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

alt text

+4

+1,因为自己的OP没有把它投票:(:(如果它是正确的,然后把它投票!) – helios 2012-02-21 11:48:53

+0

那个向导截图就够了。谢谢! – 2016-01-13 00:08:26

9

原则上,你只需要OSGi的元数据添加到清单

有一个Eclipse包的创造者赋予添加这些条目应该是插件开发工具包的一部分,一个非常实用的方法。

这里是一个article详细说明该过程,以及如何使用Bnd工具,maven等等。我很喜欢the pax tools。这都是基于命令行的,但非常实用。要创建现有jar的OSGi包,您可以使用bnd tool

+0

pax工具和pax-wrap-jar链接已经死了 – maarten 2015-05-05 21:50:05

5

首先检查了,如果你能找到仓库

  1. SpringSource的http://www.springsource.com/repository
  2. 于FuseSource http://repo.fusesource.com/

如果你没有找到OSGi化的版本库的一个OSGi的启用版本。您可以继续使用pax工具 - PaxConstruct或使用aQute's Bnd tool

+1

Fusesource http://repo.fusesource.com/已经死了 – maarten 2015-05-05 21:49:30

+0

@maarten谢谢,我更新了更多最新资源的链接。 – 2015-05-06 06:53:24

+0

@PeterTillemans,你更新了哪些链接?不幸的是,我不知道什么是fusesource新的repo网址..请随时链接我的答案 – 2015-05-06 09:41:08

1

Eclipse Bundle Recipe项目为添加的OSGi元数据从Maven仓库所消耗的JAR一个Maven为基础的方法。

在其核心,它使用bnd tool。这个工具就像一把瑞士军刀。它分析jar和类文件并正确计算软件包的导入和导出。你应该使用bnd来自己转换专有的jar。这是available in Maven Central

0

迟到党:

如果您使用摇篮,你可以,如果你应用osgi-run插件添加的jar作为项目的正常依赖。

osgi-run插件将透明地将jar包装到你的包中,导出每个包并计算它的所有导入。因为Gradle会知道jar的传递依赖关系,所以如果需要的话,它也会为它们做同样的事情。

罐子(S)将成为OSGi运行时的OSGi运行造成的,你可以再与gradle runOsgigradle createOsgi,然后执行无论是run.shrun.bat脚本启动的一部分。

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

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

例子:

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.' 
    } 
} 
2
  • 从现有的JAR归档一个新的插件项目。

enter image description here

  • 添加的jar文件要导出

enter image description here

  • 单击下一步,将项目命名。

enter image description here

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

  • 如果解压JAR包到项目选定那么您将手动导出所需的包中的文件MANIFEST.MF文件。

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