簡體   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