我正在使用Bndtools做一些开发。Bndtools为Apache Felix和(显然)Equinox提供了开箱即用的OSGi运行时。
但是,假设您想要开发bundle并在Knopflerfish中的Bndtools中测试它们?或者某些公司的专有容器(是的,它们确实存在,令人惊讶!)?Bndtools使得在开发环境中添加单个包变得很容易,但是似乎没有任何明显的方法来添加一个完整的运行时来进行测试。
是否有人可以添加替代OSGi运行时环境到Bndtools?
只需获取框架JAR并将其拖放到其中一个存储库中,例如本地存储库。然后它将出现在运行编辑器的OSGi Framework下拉列表中。
注意,您可能必须关闭并重新打开编辑器才能刷新下拉菜单内容。
bind (tools)中的想法是在bndrun
文件中定义您的运行时。您可以创建任意数量的bndrun
文件。bndrun文件包含环境的设置(框架、系统包、属性等)和包的列表。框架和包来自存储库。正如Neil所指出的,您可以通过将它们添加到存储库中来添加不同的框架。
您可以在bndrun文件中包含-include
文件,以便在不同的bndrun文件之间共享变量。然后最好使用解析器来创建-runbundles
列表。
在OSGi enRoute中,我们以这种方式为实际应用程序和调试环境创建不同的运行时。查看OSGi enRoute cm示例,查看debug.bndrun
和osgi.enroute.exampes.cm.bndrun
文件。注意,debug.bndrun
文件包含osgi.enroute.exampes.cm.bndrun
文件,因此任何设置都会自动继承。还要注意合并属性的使用,它允许您添加属性,而不会破坏包含的文件。