(1) bnd简介
BndTools提供了一种使用Eclipse开发OSGi Bundles的方式。它没有通过直接编辑Manifest.MF
的方式定义
依赖关系,而是使用Bnd 文件基于Bnd工具驱动工具链(toolchain)。此外,BndTools还具有自动化语义版本控
制功能(automated semantic versioning),它会将已构建的组件和之前发布的组件相比较,让算法来决定是否对
大、中、小三种版本号进行升级,而不是让用户人为决定。
(2) 与bnd的关系
对于构建和分析OSGi Bundle来说,Bnd是一种极为强大的底层工具。是由Peter Kriens(OSGi联盟的技术总监)
开发的,OSGi联盟使用它来构建自己的API套件、兼容性测试以及引用实现的Bundle。作为一种底层工具,它很
容易继承,并且可以直接从命令行调用,可以被ANT任务所使用,也可以嵌入到Maven和IDE中。
BndTools使用bnd作为它的“引擎”。所有主要功能都是bnd本身提供的,而BndTools只是描述什么时候应该调
用bnd,并以更好的形式来展现结果。由于很多其它工具也集成了bnd,所以bnd所使用的描述文件几乎已经成为
一种事实上的标准,这意味着BndTools开发者很容易与使 用其它工具的开发者协作,也可以在选择其它工具的时
候很容易地完成迁移。
(3) 与PDE比较
Eclipse PDE是另一种基于Eclipse的OSGi开发环境。BndTools没有以任何方式重用PDE,但是BndTools和
PDE都是基于Eclipse的Java开发工具集(JDT)构建的。
PDE所遵循的开发哲学和bnd以及BndTools不同,它被称之为“manifest优先(manifest first)”。在PDE中,
需要直接编辑MANIFEST.MF文件,它会直接集成到Bundle中,而不需要任何后续处理。而BndTools思想是,
MANIFEST.MF应该当作编译器输出来对待:也就是说,应该使用更简单的源代码来生成这个文件。这非常重要,
因为完整的MANIFEST.MF文件中会包含很多重复的信息,或者应该直接从Java代码中继承的信息,比方说包一级
的依赖关系列表。手动编辑这样的信息是个苦力活,而且容易出错。
1. BndTools安装配置
请参考:http://bndtools.org/installation.html
Update Site: http://bndtools-updates.s3.amazonaws.com/
2. BndTools使用
3. 参考资源
http://wso2.org/library/tutorials/develop-osgi-bundles-using-maven-bundle-plugin
http://njbartlett.name/2011/03/23/towards-maven-support-in-bndtools.html
http://bndtools.org/installation.html