出于什么原因,我想让我的项目成为OSGI包而不仅仅是标准的JAR包?它是否仅适用于使用OSGI框架的应用程序(例如:Equinox / Eclipse)?或者从开发的角度来看它是否有用,即:在Eclipse开发期间能够轻松地重用其他项目的OSGI包吗?
答案 0 :(得分:3)
OSGi为模块提供支持,您可以控制依赖项。每个模块可以包括和排除来自其他包的包。您还可以在运行时替换捆绑包。使整个项目成为一个捆绑包没有这些好处。如果它不能作为OSGi包使用,我只会将类似jdbc驱动程序的jar包装为bundle。 首先检查您的项目是否会带来好处。然后确定哪些模块应该是捆绑。
答案 1 :(得分:3)
如果您的项目是公共或开源库,那么请确实将其作为OSGi包。这对可能想要使用您的库的OSGi开发人员有很大帮助。
另一方面,如果您的图书馆是私有的,那么OSGify的好处是有限的。如果您决定稍后战略性地采用OSGi,那么这将是一个优势。您也可以从显式依赖项中获得一些好处,即您可以查看该包以确切了解它所依赖的内容。
这样做没有运行时成本。清单中的OSGi数据被非OSGi运行时忽略。
您必须在构建步骤中生成OSGi清单。最好的工具是Bnd,它可以很容易地集成到任何ANT构建中 - 用它来代替“JAR”任务。如果您使用Maven构建,则使用Maven Bundle插件(内部使用Bnd)。
答案 2 :(得分:1)
只有在您提到的OSGi容器中使用它时才有用。
如果你正在寻找答案,为什么它一般有用,你可以通过谷歌搜索找到很多东西 - 从维基百科开始:
总的来说,我认为OSGi的主要好处是封装/版本控制,解决框架提供的JAR地狱和管理,根据您的项目,这可能是您可能感兴趣也可能不感兴趣。
我明确建议您阅读OSGi,如果您还没有 - 这是非常有趣的技术。我建议阅读Neil Bartlett关于EclipseZone的文章 - 这是第一篇:
其中有很多,所以google他们 - 非常有趣的阅读,这也会让你知道这是否是你应该考虑的事情。
SpringSource是OSGi的重要支持者,因此值得一看:
答案 3 :(得分:0)
如果您计划在OSGi上下文中使用它,那么您也可以将其作为捆绑包。我不知道将它变成捆绑包会有任何负面影响,而如果你没有把它变成捆绑包并稍后发现你需要它,那么你可能不得不回去修复它。除此之外我个人不知道OSGi以外的任何使用清单元信息的东西 - 但就像我说的那样;我觉得它不会受到伤害。
答案 4 :(得分:0)
OSGIfying项目将允许OSGI用于Eclipse中的依赖项管理,而不是标准的Eclipse项目构建机制,或者外部依赖管理工具,如Ivy或Maven。将项目转换为OSGI包允许您将该项目的包依赖关系表示为包依赖关系(如果存在包依赖关系的包),这将由OSGI框架而不是其他机制(标准Eclipse项目构建/ Ivy / Maven)处理)。
通过在项目的构建路径上指定其他项目和库来建立标准Eclipse项目依赖项。转换为OSGI将使用MANIFEST.MF import-package或required-bundles声明替换构建路径引用。
使用OSGI进行依赖管理而不是标准eclipse机制的优点是:
另见Should I use Eclipse plug-ins (or OSGi Bundles) as a plain dependency management tool?