2013-05-09 171 views
28

我們如何解決maven循環依賴關係。假設A是父項目,B和C是子項目。如果B依賴於C並且C依賴於B,除了擁有不同的項目之外,還有什麼方法可以解決循環依賴問題。如何解決maven循環依賴關係

在此先感謝,我在論壇中搜索,但無法得到確切的解決方案。請讓我知道是否有任何可能。

+1

你已經排除創建一個新的項目,這是我會做的......任何你不想這樣做的理由?這將是最好的解決方案。 – NilsH 2013-05-09 18:30:37

回答

19

Maven不允許項目之間的循環依賴關係,因爲否則不清楚首先要構建哪個項目。所以你需要擺脫這個循環。一個解決方案就是你已經提到的那個,來創建另一個項目。另一種方法是將一些類從B移動到C,反之亦然。或者,如果不需要兩個項目,有時將項目B和C合併到一個項目是正確的。

但是,如果不知道和分析爲什麼你的項目相互依賴,建議最好的解決方案有點難。

因此,我建議您可以使用諸如JDependInteliJ分析工具的工具來查找有問題的類,並根據它們爲您的軟件找到更好的設計。大多數時候,我創建了一個類似於接口模塊和實現模塊的東西,它可以擺脫大多數循環。

6

創建一個新項目確實是一個解決方案。

依賴倒置是第二種可能的解決方案。

參照here的非循環依賴性原則。

here用於依賴反轉原理。