繁体   English   中英

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

[英]Eclipse plugin compatibility layer (using fragments?)

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

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

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

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

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

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

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

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

作为旁注,我想知道OSGi片段是否真的是您设置WidgetMaster版本的最佳选择(如果您选择适配器方法)。 我不是OSGi专家 ,但您可以查看OSGi服务工厂,为您提供正确版本的WidgetMaster 显然有更多的演进方式来完成OSGi的依赖注入: Apache Felix Maven SCR插件Blueprint ContainerApache Felix iPojo 这个SO问题似乎涵盖了OSGi中DI的问题。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM