Eclipse 插件兼容层(使用片段?)

标签 eclipse eclipse-plugin

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

到目前为止我想出的是:

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

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

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

最佳答案

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

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

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

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

祝你好运!我想知道你选择哪条路线,因为我很快就会遇到类似的挑战!

关于Eclipse 插件兼容层(使用片段?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19553213/

相关文章:

java - IntelliJ "Live templates"的 Eclipse 等价物是什么?

python - Eclipse 控制台中的 Pydev 源文件超链接

java - 如何扩展 org.eclipse.wst.jsdt.internal.ui.javaeditor 并使用自定义 javaScript 标签创建我们自己的 Java 脚本编辑器

eclipse - 如何在Eclipse启动时自动运行插件代码?

java - 关于生成报告时自定义 "BIRT chart Rendering"

eclipse - 我可以使用XAMPP 的apache tomcat 来执行java Dynamic Web Project 吗?

java - 构建失败,缺少关键属性(Android SDK)

eclipse - 运行 cordova build android phonegap 时出现错误

eclipse - 添加更新站点 URL 以在安装过程中查找第三方依赖项

eclipse-plugin - 将已安装的插件从 eclipse 导出到另一个