1. 程式人生 > >談談maven多模塊

談談maven多模塊

開發效率 復制 bubuko 手動 核心 XML 解耦 粘貼 好的

記得在校的時候,通常用的比較多是動態web工程,動態web工程導入最多就是jar包,這些jar包需要自己手動復制粘貼放入lib目錄下,然後build path,有的IDE會自動build path有的需要手動選中所有lib,然後build path。

後來工作了,用的最多的就是maven。maven簡單的說,它就是項目構建工具,你需要什麽依賴,就去maven庫中搜索,然後找到你想要的依賴,將其復制到你的pom.xml文件中,註意用<dependencies></dependencies>將依賴進行包含。

為什麽用maven?

給我感觸最深的就是之前用動態web工程構建項目,光導jar包就花了不少時間,我經常強調一句,jar包導對,你的項目基本成功了80%。這個項目指的是框架整合。如果導不對,錯誤都不好找。

而maven,只需將找到的依賴放入pom.xml文件中,就會自動去下載這些依賴,當然maven倉庫最初是沒有任何依賴。

我用的是eclipse 氧氣版,自帶maven插件,大家可以去Eclipse官網去下載 https://www.eclipse.org/downloads/ 另外idea也自帶maven插件,雖然idea我幾乎沒用過,用的特別少,除了之前幫助一位朋友解決一些項目問題時,用過,其他時候用的最多的還是eclipse。

不說太多題外話,用maven最直接的原因就是不用為jar包發愁。

還有為什麽用maven?

讓項目結構更清晰規範,而且還更易擴展,動態web構建項目,擴展太不易了,特別是針對電商,金融一些大型網站而言。

對於maven而言用多模塊開發更好,比較符合解耦原則。

技術分享圖片

這個是我很久之前創建的一個maven項目,這裏就不以動態web項目為例了。

這個maven項目並沒有多模塊,所以我從dao到service,乃至controller,或者以後加入redis或者集成第三方插件都要在這個項目下寫。

對於個人開發而言,這倒影響不大,但是假設它是一個大規模後臺系統,多人進行開發,全部都在這一個項目下開發,即便使用git等版本控制工具進行代碼管理,使用git是為了讓代碼管理的更好,同時也是為了方便合並代碼比對。

早期團隊三四個開發一個項目還好,後來走了一部分人,來了幾個新手,新手的話,對代碼邏輯不是特別清楚,所以要一一細看,但是如果是如下所示:

技術分享圖片

一共11個包,每個包至少有十幾二十個java類,但真實開發場景中,不只11個包,特別是對於一些大型系統而言,三四十個包,假設三四十個包全部混合在一個項目下,每個包下至少三十個java類,對於新手而言熟悉代碼需要比較長的時間,這就增加了一定的成本。

說到這,maven多模塊就可以解決這個問題,還是以我的博客為例:

下面是maven多模塊構建項目:

技術分享圖片

總共五個項目,一個父工程,四個子工程。

父工程主要裝載著主要的依賴文件

子工程分別有:

blog-common:主要放公共復用的類,例如常用工具類等

blog-core:主要放入核心類,例如aop,shiro或者redis等,當然也包括項目的主要核心代碼

blog-generator:代碼生成器

blog-web:controller常用放置地,包含相關的配置文件,同時也可包含代碼生成器生成的代碼

目前只有這幾個,但是大家試想,如果我要接入很多第三插件或者其他應用項目,我只需增加子工程即可

而且我研究過ibase4j,jeesite,guns等github上的開源項目,他們的項目構建大多如此。

比如ibase4j,它是將項目分成這樣:

技術分享圖片

簡單的說根據業務進行模塊分層

根據業務模塊分層也是maven構建多模塊項目常用的做法之一。

從中也可以看出多模塊真的符合解耦原則,常規的maven工程之所以不解耦是因為全部放置在一個工程裏,非常不符合解耦。

代碼耦合性重,只會增加開發成本,降低效率,多模塊構建項目,讓業務更加清晰,更加規範,非常有利於項目開發效率。

我最近公司項目就使用這個,同時我個人的blog項目也打算采用這種開發方式。

今天只是淺談,一時靈感,讓我忍不住想要分享。大家針對該隨筆有更好的意見和想法,歡迎分享

談談maven多模塊