2012-08-24 211 views
1

請考慮以下情況。有三個插件:pluginA,pluginB和pluginC。 PluginA依賴pluginB並重新導出它。 PluginC想要利用pluginB並且依賴於pluginA。由於存在依賴項pluginC - > pluginA - > pluginB,pluginC是否需要添加pluginB作爲其依賴項?插件依賴關係

我相信它不應該。但是,如果我添加直接依賴pluginC - > pluginB一切正常,但如果我刪除該依賴關係,只是離開pluginC - > pluginA,然後我得到錯誤,指出從pluginB的類無法找到。在什麼情況下我會得到這些錯誤?它依賴於插件的類型(UI還是非UI)?

謝謝, 亞歷

回答

3

的傳遞依賴(C取決於A依賴於B)不工作;我只是測試了一個簡單的案例來確保。確保PluginB正在導出PluginC試圖使用的任何包。如果這不是問題,也許你可以更新有關錯誤的更多細節。

一般而言,我避免使用重新導出功能,因爲它不太明確,並且可能引入意外的依賴關係(或者至少是您不知道的依賴關係)。相反,我要麼明確地顯示所有的依賴關係(PluginC將直接依賴於PluginB),要麼使用Imported Packages(它不關心包來自哪個插件,而只是它們必須從某處可用);它更靈活。

+0

謝謝。我想使依賴C - > A - > B的原因是因爲其他插件可能想要使用插件C,所以我的插件A是一個常用插件,具有其他插件可以使用的依賴關係。假設Commom Plugin依賴於XML Utils Plugin和IO Plugin;插件X,Y和Z只需添加Common Plugin作爲它們的依賴關係,以便使用XML Utils和IO Plugins。因此整個再出口方式。我瞭解不需要的依賴可能會泄漏到這個設置中。使插件X,Y和Z取決於XML Utils和IO插件將增加維護問題。 –

+0

無論如何,它一般都有效。我認爲你必須留下一些細節,纔能有所作爲。你有沒有嘗試設置3傳遞依賴關係的簡單插件來驗證它的工作原理(這就是我所做的)? –

+0

是的,當然。我在我的代碼中使用傳遞依賴(使用我的Common插件)。然而,在這種情況下導致這種情況不起作用。我想我會深入一點,看看有什麼問題。 –