maven中多個子模塊的構建順序


 

在實際的項目開發中,為了更好的組織項目代碼,會采用分層架構的方式,這就會使用到maven的多模塊特性。
假設項目分為A、B、C、D四層,在父模塊的pom.xml中,一般這樣來對子模塊進行聚合

<modules>
    <module>A</module>
    <module>B</module>
    <module>C</module>
    <module>D</module>
</modules>

 

 

假設各個子模塊間,配置的相互依賴關系如下:

A 依賴 B
B 依賴 C
D 依賴 A

 

 

構建父模塊,我們能夠看到以下輸出:

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] C
[INFO] B
[INFO] A
[INFO] D
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------

 

 

這是因為子模塊的構建順序受兩個因素影響:

1、父模塊中各子模塊的聲明次序
2、子模塊間的依賴關系

實際的構建順序是這樣形成的:
maven按照次序讀取pom,如果該pom沒有依賴其他子模塊,就構建該模塊,否則就構建其依賴的模塊,如果該依賴模塊還依賴於其他的模塊,那么就進一步構建依賴的依賴。

在示例中,A模塊依賴B,而B模塊又依賴C,因此要先構建C,再構建B,然后才能構建A。而D依賴的模塊A已經構建了,因此直接構建它。

模塊間的依賴關系會將反應堆(Reactor)構成一個有向非循環圖,各個模塊是該圖的節點,依賴關系構成了有向邊。這個圖不允許出現循環。如果A依賴B,B又依賴A,這樣就產生了循環依賴,Maven會報錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM