2012-07-30 48 views

回答

3

@Esko Luontola

分裂的答案,如果 模塊需要單獨部署,該項目分成多個模塊是有用的,例如..

可能被誤解。如果你有單獨部署的模塊,則完全相反。在這種情況下,你不應該創建一個多模塊版本。這應該通過簡單的單獨的maven項目來完成。

多模塊構建的想法是,如果你有像耳朵項目一樣屬於一個模塊,通常包括其他幾個如客戶端,服務器,ejb,戰爭等。這通常是通過一個多模塊這意味着所有模塊具有相同的版本號,但可以分別訪問和使用。

1

將項目拆分爲多個模塊非常有用,例如,如果模塊需要單獨部署,或者在庫的情況下,某些項目的消費者只需要一部分類,或者庫的開發人員想要明確區分什麼是公共API和什麼是私有實現。對於大型項目,它可能會使代碼更容易保持順序,即使代碼在技術上可能都在同一模塊中。

1

有一些更多的用例中,我會建議使用多模塊Maven項目:

  1. 你的模塊共享相同的依賴關係,在這種情況下,你會指定主POM所有的依賴,以及所有的模塊都可以享受它。 (不需要爲每個模塊指定相同的依賴關係。)

  2. 如果您需要在多個項目上一起執行操作。我用我的所有項目創建了一個包,並將它發送給客戶,所以我使用主要的pom構建它們,並使用其他maven插件將它們打包爲zip文件。

3

看來這個問題更多的是關於一般軟件。 Maven只是這樣做的一種方式。

我會qoute從"Continuous Delivery", by Jez Humble

什麼是組件的幾行?這是一個軟件中可怕的超載術語, ,所以我們會盡量讓它儘可能清楚我們的意思。 當我們談論組件時,我們的意思是一個合理的大規模代碼 結構在一個應用程序中,有一個定義良好的API,可能會被替換爲另一個實現 。 A 基於組件的軟件系統的特徵在於,將代碼塊分成離散片段,其通過與其他組件定義明確且有限的交互來提供行爲。基於組件的系統的對立面是單體系統,沒有明確的邊界或負責不同任務的元素之間的關注分離。單片系統通常具有較差的封裝,並且在邏輯上獨立的結構之間的緊密耦合打破了德米特定律。

...

採用基於組件的設計通常被描述爲鼓勵 重用和良好結構特性如鬆散耦合。這是 是真實的,但它也有另一個重要的好處:它是 大型開發團隊合作的最有效方法之一。

...

許多項目都是罰款單版本控制庫和 簡單的部署管道。然而,許多項目已經演變爲一個難以維繫的代碼沼澤,因爲沒有人做出決定以便創建離散組件,因爲這樣做很便宜。在 點哪些小項目變成大項目是流暢的,並會潛入你的 。

...

最後,值得注意的Conway的法律,其中規定 「的組織,其設計系統。 。 。被限制爲產生 設計,這些設計是這些組織的通信結構的副本。「4因此,例如,開發人員通過電子郵件進行通信的開放源代碼項目往往是非常模塊化的,只有很少的接口。由小型團隊開發的產品將傾向於 緊密耦合而不是模塊化。小心你如何設置你的開發團隊 - 它會影響你的 應用程序的架構。

我發現這個最後的聲明是多麼清晰準確。 我強烈推薦這本書! :-)