我有一個關於Maven的多模塊項目的一般性問題。何時以及爲何要這樣做?爲什麼以及何時創建一個多模塊Maven項目?
回答
@Esko Luontola
分裂的答案,如果 模塊需要單獨部署,該項目分成多個模塊是有用的,例如..
可能被誤解。如果你有單獨部署的模塊,則完全相反。在這種情況下,你不應該創建一個多模塊版本。這應該通過簡單的單獨的maven項目來完成。
多模塊構建的想法是,如果你有像耳朵項目一樣屬於一個模塊,通常包括其他幾個如客戶端,服務器,ejb,戰爭等。這通常是通過一個多模塊這意味着所有模塊具有相同的版本號,但可以分別訪問和使用。
將項目拆分爲多個模塊非常有用,例如,如果模塊需要單獨部署,或者在庫的情況下,某些項目的消費者只需要一部分類,或者庫的開發人員想要明確區分什麼是公共API和什麼是私有實現。對於大型項目,它可能會使代碼更容易保持順序,即使代碼在技術上可能都在同一模塊中。
有一些更多的用例中,我會建議使用多模塊Maven項目:
你的模塊共享相同的依賴關係,在這種情況下,你會指定主POM所有的依賴,以及所有的模塊都可以享受它。 (不需要爲每個模塊指定相同的依賴關係。)
如果您需要在多個項目上一起執行操作。我用我的所有項目創建了一個包,並將它發送給客戶,所以我使用主要的pom構建它們,並使用其他maven插件將它們打包爲zip文件。
看來這個問題更多的是關於一般軟件。 Maven只是這樣做的一種方式。
我會qoute從"Continuous Delivery", by Jez Humble
什麼是組件的幾行?這是一個軟件中可怕的超載術語, ,所以我們會盡量讓它儘可能清楚我們的意思。 當我們談論組件時,我們的意思是一個合理的大規模代碼 結構在一個應用程序中,有一個定義良好的API,可能會被替換爲另一個實現 。 A 基於組件的軟件系統的特徵在於,將代碼塊分成離散片段,其通過與其他組件定義明確且有限的交互來提供行爲。基於組件的系統的對立面是單體系統,沒有明確的邊界或負責不同任務的元素之間的關注分離。單片系統通常具有較差的封裝,並且在邏輯上獨立的結構之間的緊密耦合打破了德米特定律。
...
採用基於組件的設計通常被描述爲鼓勵 重用和良好結構特性如鬆散耦合。這是 是真實的,但它也有另一個重要的好處:它是 大型開發團隊合作的最有效方法之一。
...
許多項目都是罰款單版本控制庫和 簡單的部署管道。然而,許多項目已經演變爲一個難以維繫的代碼沼澤,因爲沒有人做出決定以便創建離散組件,因爲這樣做很便宜。在 點哪些小項目變成大項目是流暢的,並會潛入你的 。
...
最後,值得注意的Conway的法律,其中規定 「的組織,其設計系統。 。 。被限制爲產生 設計,這些設計是這些組織的通信結構的副本。「4因此,例如,開發人員通過電子郵件進行通信的開放源代碼項目往往是非常模塊化的,只有很少的接口。由小型團隊開發的產品將傾向於 緊密耦合而不是模塊化。小心你如何設置你的開發團隊 - 它會影響你的 應用程序的架構。
我發現這個最後的聲明是多麼清晰準確。 我強烈推薦這本書! :-)
- 1. 創建一個Maven項目模塊樹?
- 2. 在maven中創建多模塊項目
- 3. 錯誤創建多模塊Maven項目
- 4. 用spring創建一個多模塊maven項目
- 5. 如何創建maven模塊化項目
- 6. 當創建一個maven模塊項目時,如何將語言設置爲scala?
- 7. Rails:何時以及爲什麼要創建一個gem /插件?
- 8. Maven多模塊項目,爲什麼需要「pom包裝」?
- 9. 創建一個maven項目
- 10. 多模塊maven項目dependencymanagement
- 11. maven m2eclipse多模塊項目
- 12. Maven的多模塊項目
- 13. Eclipse Maven多模塊項目
- 14. 多模塊maven項目
- 15. 如何創建一個帶有trunk/branches/tags結構的maven多模塊項目?
- 16. 單模塊與多模塊maven項目
- 17. 的Maven(多模塊項目) - 模塊
- 18. Maven多模塊項目導入模塊
- 19. 爲什麼我的多模塊Maven項目不能安裝某些模塊?
- 20. 將maven項目轉換爲多模塊
- 21. 發佈多模塊maven項目中只有一個模塊
- 22. 如何爲Spring Roo項目創建Maven模塊?
- 23. 你爲什麼要從一個塊創建一個模塊?
- 24. 如何創建一個菜單項以顯示多個模塊
- 25. 在eclipse中一次導入多個多模塊項目作爲maven項目
- 26. Maven項目中的多個小模塊
- 27. 什麼是SS_X_JSESSIONID以及何時創建?
- 28. 如何使用多個子模塊從maven項目創建單個庫jar?
- 29. 如何以及爲什麼在創建
- 30. 如何創建一個SVN Maven項目?