簡體   English   中英

處理maven多模塊項目中的相互依賴

[英]Handling interdependencies in maven multi-module project

我一直在瀏覽Maven Framework 在進行多模塊項目時,我讀到模塊之間不能接受循環依賴。 所以我想到了一個場景,比如……

   root ----------
    - pom.xml    |
                 |
                 |--- moduleA
                 |  - pom.xml (moduleB has been added as a dependancy)
                 |
                 |--- moduleB
                    - pom.xml
                    
                    

假設moduleA有一個屬性類AppProperty和一個調用moduleB可用的另一個類BMain

Main可用類moduleA : -

someValue = AppProperty.get(propKey);

    //some logic
    
B mb = new B();
B.process(...);

moduleB B類:-

process(...) {
someOtherValue = AppProperty.get(someKey)

    // some other logic
}

現在Main不會拋出任何compile-time errors因為它的依賴項已經解決,因為moduleB已作為依賴項添加到moduleA'a pom.xml 但是對於B類,情況並非如此,因為它的調用AppProperty類僅在moduleA可用。 我不能在moduleB的 pom 中添加moduleA的依賴,因為這會導致循環依賴(如果我理解正確的話)。

我理解理想情況下建議以非循環方式維護代碼,但是如果由於某種原因消除循環依賴是不可行的怎么辦? 在這種情況下,有沒有辦法在不主動改變現有代碼邏輯的情況下處理循環依賴

您不能構建具有循環依賴項的項目。 您需要在 B 之前先構建 B,這有點矛盾。

但是像你這樣的問題很容易解決:

  • 如果問題只是類AppProperty或其他幾個,只需將它們從 A 移到 B。
  • 如果您有 A 和 B 的一些公共類,請創建一個輔助模塊 C 並將其用作 A 和 B 中的依賴項。
  • 如果 A 和 B 一直互相調用,它們應該只是一個模塊。 因此,將它們合並為一個模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM