2008-12-16 35 views
3

我們在我們的項目中持續討論了我們的maven模塊的粒度。我們已經認識到,框架(如spring)和內部應用程序的需求可能存在差異,這些應用程序始終以單片方式部署。爲什麼你細分爲內部項目的maven模塊?

我們也同意隱藏適配器在獨立API模塊後面的外部系統的實現細節是相當明智的,因此實現類不會滲入到主要實現的類路徑中。 as 但是,這就像我們去。這是一個web項目,所以我們有像「網絡」,「核心」和「適配器」等模塊。我們有多個後端,但我們不需要可插拔性。

你用什麼標準模塊化maven?你爲Web項目製作了哪些模塊?

回答

4

在我看來,項目部門應該是非常細緻的,即使是「只有一個webapp」。

我會爲數據訪問層接口和實現,業務層接口和實現以及webapp本身製作單獨的項目。我還會製作至少一個「共同」項目,用於包含與其他項目相關的代碼。但這僅僅是個開始。無論正在開發的應用程序(字符串,日期,反射等)如何,我都會毫不猶豫地提取相關實用程序類的commons-util項目。我也會在做測試時做一個有用的工具項目(commons-test)。這只是下一步...;)

如果我寫了一般有用的代碼與hibernate相關,我會把它放在一個hibernate-utils項目中。有用的Spring實用程序將用於spring-utils項目等。在這樣做時,許多項目只包含一個或幾個包,而包通常包含幾個類。

我這樣做的理由是它幫助我思考我寫的代碼。這是真正的業務邏輯,還是一般的字符串操作,日期操作,Hibernate特定的邏輯等?我的圖層變得更乾淨,並且在包和項目之間獲得循環依賴關係變得更加困難(我們不需要這些)。另外,在其他項目中重用代碼變得更加容易。總會有其他項目......

我也發現新開發人員更容易得到一個結構的掛起,因爲項目變得更小,更易於管理;當你覺得你不必承受任何事情時,開始編碼會更容易。

作爲細粒度方法的最後一個優點,構建時間減少是因爲您不必每次都構建一切。

+0

你是否發現你的IDE的內存需求爆炸與這麼多的模塊? – krosenvold 2008-12-16 18:50:12

相關問題