plugin.xml与OSGI规范有何关系



有几种方法可以在eclipse中制定束依赖性。我的问题是:"全部是什么?"," Eclipse为什么使用两个不同的文件(plugin.xml,subtest.mf)?"," Equinox还处理Eclipse扩展机制,还是只能处理与OSGI相关的信息?"。据我了解,Eclipse在转移到Equinox之前提供了扩展机制。扩展机制背后的想法是,开发人员可以定义精确的界面,从而增强其Eclipse RCP,以便将来具有其他功能。此信息存储在XML文档中" plugin.xml"指定提供的扩展点并实现的扩展名。

另一方面,

Equinox提供了现在实现的功能齐全的服务,可以由插件(如库)使用。这意味着功能已经存在,可以在服务方面使用捆绑包。与OSGI相关的信息通过添加这些可选信息位于subtest.mf中。不使用OSGI的应用程序将不考虑此信息,但由于信息是可选的,因此将完全有效。

请让我知道我是否错了。

在Eclipse 3.0之前,Eclipse运行时具有其自己的模块概念和实现。插件xml用于声明扩展以及声明对其他插件的依赖。

使用Eclipse 3.0,项目维护者决定使用OSGI模块化Eclipse,而Equinox诞生了。它实施了OSGI规范,该规范还扩展了以提供从以前版本继承的日食特异性。

从那时起,每个插件也是OSGI捆绑包,但不一定反之亦然。通常,每个插件和捆绑包也可以用作普通库,忽略了罐子中包含的元数据。但是,在运行时,插件/捆绑包通常没有用,因为它们取决于Equinox/Osgi提供的基础架构。

因此,如今,plugin.xml文件仅包含扩展点和扩展点,而manfiest.mf文件由OSGI运行时读取 - 在其他声明中获得 - 依赖项信息。

Equinox项目提供了两件事:

  • OSGI规范的实现,加上Eclipse特定的添加
  • Eclipse平台和其他基于Eclipse的项目使用的核心库。

服务也是OSGI规范的一部分。从技术上讲,服务和扩展可以用作入口点 中的平台/其他插件的功能。但是,由于历史原因,我认为大多数入口点都是以扩展点的形式提供的。

扩展点设计的一个目标是管理大量扩展,而不会在启动时和运行时减缓降低Eclipse的性能。因此,读取扩展点和扩展名,而无需激活提供它们的插件的OSGI捆绑包。激活尽可能晚:需要调用扩展名提供的代码。

这是否回答您的问题/确认您的假设?

最新更新