在Play OSGi中提及到了Bnd是个非常有用的东西,既然是个好东西,就介绍给大家用,在得到了Peter的授权下,我把这篇使用手册翻译成了中文,大家感兴趣的话可以到这里看看:http://www.aqute.biz/Code/BndCn ,同时也会提供一个PDF的版本供大家下载,PDF版本下载地址为:http://www.blogjava.net/Files/BlueDavy/Bnd.zip 。
有 了Bnd后,传统的java工程非常容易打包成标准的OSGi R4的bundle,同时Bnd也为校验Bundle是否符合OSGi R4规范提供了支持,而且Bnd有命令行、Eclipse插件、Ant Task和Maven插件,拿过来非常的好用,强烈推荐大家用用看。
不过如果Bnd推出一个图形的编辑文件内容的插件就更好了,就像插件里的Manifest.MF的图形编辑器一样,那样Bnd就好用了。
在这里简单的说一个使用Bnd打包生成Bundle的例子,
例如我们要把Eclipse里A工程里的接口和实现打包成两个Bundle:
首先把接口部分cn.org.osgi.demo里的类打包为demo Bundle,并允许其他Bundle访问到这个package,那么就只需要在A工程里建立一个cn.org.osgi.demo.bnd的文件,文件内容这么写:
Export-Package = cn.org.osgi.demo;-noimport:=true;version=1.0
Bundle-Version = 1.0
然后就只需要在Eclipse里选中此文件,点击右键,选择Make Bundle就会在和bnd文件同级的目录下生成一个cn.org.osgi.demo.jar文件,打开这个jar文件查看它的manifest.mf文件,内容如下:
Manifest-Version: 1.0
Bundle-Name: A
Created-By: 1.4.2_03 (Sun Microsystems Inc.)
Bundle-ManifestVersion: 2
Bundle-SymbolicName: cn.org.osgi.demo
Tool: Bnd-0.0.160
Bnd-LastModified: 1185523455812
Export-Package: cn.org.osgi.demo;version=1.0
Bundle-Version: 1.0
可以看到,Bnd已经按照OSGi规范生成了标准的manifest.mf的内容。
然后把实现部分cn.org.osgi.demo.impl里的类打包为demo Impl Bundle,同样的在A工程里建立一个cn.org.osgi.demo.impl.bnd的文件,文件内容这么写:
Private-Package = cn.org.osgi.demo.impl
Bundle-Version = 1.0
同样的方法打包生成此Bundle,这个Bundle的manifest.mf文件内容为:
Manifest-Version: 1.0
Bundle-Name: A
Private-Package: cn.org.osgi.demo.impl
Created-By: 1.4.2_03 (Sun Microsystems Inc.)
Import-Package: cn.org.osgi.demo
Bundle-ManifestVersion: 2
Bundle-SymbolicName: cn.org.osgi.demo.impl
Tool: Bnd-0.0.160
Bnd-LastModified: 1185523495406
Bundle-Version: 1.0
可 以看到,基于Bnd我们非常容易就把一个传统的java工程打包成了两个有效的OSGi R4的Bundle,从这可以看出这对于要把传统的java系统重构为基于OSGi的系统会有很大的帮助,除了打包生成Bundle外,Bnd本身还具备 了校验bundle是否符合OSGi R4规范、把新的文件或jar文件添加到已存在的Bundle中去。
如果觉得还不错的话,大家不妨试试,具体的使用方法可以看使用手册。
Bnd - Bundle Tool中文使用手册
最新推荐文章于 2024-07-30 11:02:11 发布