【问题标题】:Set bundle start level in Eclipse launch config with features在具有特性的 Eclipse 启动配置中设置捆绑启动级别
【发布时间】:2023-03-22 01:59:02
【问题描述】:

我正在尝试运行一个插件测试,该测试需要一个捆绑包以某个启动级别启动。问题是,这似乎只有在使用“仅在下面选择的插件”而不是“在下面选择的功能”的启动配置时才有可能。

我想避免基于插件维护启动配置,每次添加或重命名插件时我都需要更新这些配置。这样做的过程非常繁琐,并且当多个开发人员修改相同的启动配置文件时会产生很多冲突。

因此,我想使用基于功能的启动配置。选择“下面选择的功能”时,我仍然可以添加单个插件,但似乎没有任何选项可以设置开始级别。

我通过使用产品构建中生成的config.ini 让它工作了。不幸的是,它似乎需要一个 bundles.info 文件,其中又包含一个单独的插件列表,所以这并没有让我更进一步。

在这种情况下,有没有办法为某些捆绑包设置启动级别,而不必为每个启动配置维护所有必需插件的列表?

【问题讨论】:

  • 您是否使用 xxx.product 文件进行 RCP 构建?可以在其中指定开始级别。
  • 是的,有一个产品,它配置了该插件的启动级别。我曾想过用完整的产品启动测试,但在大多数情况下,我只想独立测试一组功能。

标签: eclipse-plugin osgi pde


【解决方案1】:

Eclipse 2019-09 支持Configuration of start levels for feature based launcher
我没有测试它,因为我还不能从 Eclipse Oxygen 更新,但这正是我需要的。


对于早期的 Eclipse 版本,我找到了一种可能的解决方案,即使用 osgi.bundles 属性覆盖包及其启动级别。

Eclipse 具有Configurators 的概念,可用于配置包状态。可以通过覆盖启动配置对话框的“VM 参数”字段中的osgi.bundles 属性来设置配置器。我使用org.eclipse.equinox.simpleconfigurator 来定义我需要的具有启动级别和自动启动属性的捆绑包(我使用我的产品的config.ini 作为如何设置的参考)。启动器的 VM 参数现在如下所示:

-Dosgi.bundles=org.eclipse.equinox.simpleconfigurator@1:start,org.example@2:start

它似乎有效,但看起来有点像 hack。如果有人知道更好的解决方案,我将不胜感激。

顺便说一下,有问题的包是针对 AspectJ 的,所以我的“VM 参数”字段看起来像这样,并且 AspectJ 编织现在可以正常工作:

-Dosgi.bundles=org.eclipse.equinox.simpleconfigurator@1:start,org.eclipse.equinox.weaving.aspectj@2:start
-Dosgi.framework.extensions=org.eclipse.equinox.weaving.hook

【讨论】:

  • 注意这个错误...bugs.eclipse.org/bugs/show_bug.cgi?id=547762 Eclipse 将提供一个解决方案,我认为您可以在 2019-09 版本的 UI 中提供 start-levels/auto.start,但配置。 ini 方式目前不起作用。
  • @PeterKirschner 谢谢! eclipse.org/eclipse/news/4.13/… 正是我需要的功能。我目前仍在使用 Photon,它似乎将 'osgi.bundles' 设置为 VM 参数,而 config.ini 到目前为止对我不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 2014-01-01
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多