鍍金池/ 教程/ 物聯(lián)網(wǎng)/ 項(xiàng)目模塊化
依賴管理實(shí)戰(zhàn)
配置遠(yuǎn)程倉庫
安裝Gradle
簡介
項(xiàng)目自動(dòng)化簡介
配置子項(xiàng)目
Gradle強(qiáng)大的特性
自動(dòng)化測試
簡介
掌握構(gòu)建生命周期
使用命令行操作
構(gòu)建Java項(xiàng)目
管理任務(wù)
構(gòu)建工具
連續(xù)傳遞的特性
用Gradle開發(fā)Web項(xiàng)目
聲明依賴
構(gòu)建塊
簡介
測試Java應(yīng)用
java構(gòu)建工具
為什么選擇Gradle
拆分項(xiàng)目文件
單元測試
多項(xiàng)目打包
Gradle 起步
介紹這個(gè)Gradle項(xiàng)目
簡介
自定義腳本
Gradle包裝器
簡要概述依賴管理
項(xiàng)目模塊化

項(xiàng)目模塊化

在企業(yè)項(xiàng)目中,包層次和類關(guān)系比較負(fù)責(zé),把代碼拆分成模塊是一個(gè)比較困難的任務(wù),因?yàn)檫@需要你清晰的劃分功能的邊界,比如把業(yè)務(wù)邏輯和數(shù)據(jù)持久化拆分開來。

解耦和聚合

但你的項(xiàng)目符合高內(nèi)聚低耦合時(shí),模塊化就變得很容易,這是一條非常好的軟件開發(fā)實(shí)踐。一個(gè)很好的模塊化的例子就是Spring框架,spring框架提供了很多服務(wù),比如MVC web框架、事務(wù)管理器、JDBC數(shù)據(jù)庫連接等,下圖展示了Spring3.x的模塊間的關(guān)系:

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag32.png" alt="" />

看起來這個(gè)架構(gòu)非常的龐大嚇人,定義了非常多的組件相互間的依賴關(guān)系比較復(fù)雜,在實(shí)際使用過程中你并不需要導(dǎo)入整個(gè)框架到你的項(xiàng)目中,你可以選擇你需要使用的服務(wù)。幸運(yùn)的是模塊之間的依賴都是通過元數(shù)據(jù)指定的,Gradle的依賴管理很容易解析它的傳遞依賴。

區(qū)分模塊

下面我們還是繼續(xù)之前那個(gè)ToDo的例子,我們來把它拆分為多個(gè)模塊。

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag33.png" alt="" /> http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag34.png" alt="" />

你已經(jīng)根據(jù)類的功能把它們拆分成一個(gè)個(gè)包,基本上分為下面幾個(gè)功能:

  • 模型: 用來表示數(shù)據(jù)
  • 倉庫: 檢索和存儲數(shù)據(jù)
  • Web: 用來處理HTTP請求、渲染頁面的Web組件

雖然這是一個(gè)非常小的項(xiàng)目,這些模塊之間也有依賴關(guān)系:

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag35.png" alt="" />

重構(gòu)成模塊

現(xiàn)在很容易把存在的項(xiàng)目結(jié)構(gòu)重構(gòu)成幾個(gè)模塊,對于每個(gè)模塊,使用合適的名稱創(chuàng)建一個(gè)子目錄,把相關(guān)的代碼移動(dòng)到里面。默認(rèn)的源代碼路徑src/main/java還是毫發(fā)無損,Web模塊需要默認(rèn)的web應(yīng)用源代碼目錄src/main/webapp,下面顯示了模塊化的項(xiàng)目布局:

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag36.png" alt="" /> http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag37.png" alt="" />

上一篇:Gradle強(qiáng)大的特性下一篇:簡介