【问题标题】:Eclipse plugin compatibility layer (using fragments?)Eclipse 插件兼容层(使用片段?)
【发布时间】:2013-11-02 09:49:54
【问题描述】:

我编写了一个 Eclipse 插件,它依赖于另一个插件的 1.0 版(我们称之为 WidgetMaster)。现在,WidgetMaster 2.0 版已经发布,对我使用的许多类进行了界面更改。如何在支持两个版本的 WidgetMaster 的同时继续维护我的插件的一个版本?

到目前为止,我想出的是:

  1. 为 WidgetMaster 提供的所有功能创建我自己的界面。这意味着我还必须为我使用的所有类型创建包装器,这很多。
  2. 对于每个受支持的 WidgetMaster 版本,创建一个 Fragment 项目,根据该版本的 API 实现我的接口和所有包装类。

这将是大量的工作,因为我目前在我的插件代码中使用 WidgetMaster 类。如果我只依赖 Fragment 项目中特定版本的 WidgetMaster,我将不得不移动并包装所有这些。此外,99% 的包装器在不同版本中都是相同的,但我仍然需要将它们复制到每个 Fragment。

这是正确的方法还是有更好的方法来处理这种情况?

【问题讨论】:

    标签: eclipse eclipse-plugin


    【解决方案1】:

    适配器模式似乎是正确的方式,如果您真的想为不同版本的 WidgetMaster 插件提供长期支持。

    为了更短的支持时间,我会复制插件并利用我的版本控制系统及其合并功能。我会创建一个使用最新版本的 WidgetMaster 的不同分支。所以我有两个版本的插件,每个都使用不同版本的 WidgetMaster,调用特定版本的 API 调用。确保您的 VCS 已在所有设置完成后收到合并解决方案的通知,以便将来的合并不会覆盖 API 调用自定义(例如,ours 使用 git merge 的策略)。

    这两种不同的方法都有开销,但时间不同。适配器方法具有更大的初始开销,而 VCS 方法设置起来更快。但是一旦实现了适配器,开销就会很小,而 VCS 方法总是会有合并开销。

    作为旁注,我想知道 OSGi 片段是否真的是您设置要使用 WidgetMaster 的版本的最佳选择(如果您选择适配器方法)。 我不是 OSGi 专家,但您可以查看 OSGi service factories to give you the right version of WidgetMaster。显然有更多改进的方法可以使用 OSGi 完成依赖注入:Apache Felix Maven SCR PluginBlueprint ContainerApache Felix iPojoThis SO question 似乎涵盖了 OSGi 中的 DI 问题。

    祝你好运!我想知道你走哪条路,因为我很快就会面临一些类似的挑战!

    【讨论】:

    • 嗯,这不是一个理想的答案,但至少它给了我一些开始寻找的地方。谢谢!
    猜你喜欢
    • 2010-10-15
    • 2015-09-21
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多