[英]Eclipse plugin compatibility layer (using fragments?)
我编写了一个Eclipse插件,它依赖于另一个插件的1.0版(我们称之为WidgetMaster)。 现在,已经发布了WidgetMaster的2.0版,其中包含了我正在使用的许多类的界面更改。 如何在支持两个版本的WidgetMaster的同时继续维护我的插件的一个版本?
到目前为止,我想出的是:
这将是一项重要的工作,因为我目前在我的插件代码中使用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 Container , Apache Felix iPojo 。 这个SO问题似乎涵盖了OSGi中DI的问题。
祝好运! 我想知道你走哪条路,因为我很快就会遇到类似的挑战!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.