0. 前言
相比起 Maven 的 XML 配置方式,Gradle 提供了一套簡明的 DSL 用于構建Java 項目,使我們就像編寫程序一樣編寫項目構建腳本。
本文將從無到有創建一個用 Gradle 構建的多模塊 Spring Boot 項目,JDK 版本為8,IDEA 版本為 2022.3.1 。
1. 創建項目
打開IDEA,選擇菜單:File -> New -> Project,在其中找到 Spring Initializr,創建一個全新的 demo 項目,創建成功后結構如下:
之后,程序會自動下載 Gradle 安裝包,并且通過 Gradle 下載和引入的 jar 包。由于默認使用的鏡像速度較慢,我們可以先取消下載,等后面配置好國內鏡像后再重新下載,當然也可以慢慢等。
2. Gradle說明
在這里就不介紹Gradle 的優缺點了,只說一下本項目涉及的部分:
- build.gradle :管理依賴包的配置文件(相當于Maven的pom.xml)。
- gradlew :Gradle 命令的包裝,當機器上沒有安裝 Gradle 時,可以直接用 gradlew 命令來構建項目。
- settings.gradle :可以視為多模塊項目的總目錄, Gradle 通過它來構建各個模塊,并組織模塊間的關系。
- gradle/wrapper包 :Gradle 的一層包裝,能夠讓機器在不安裝 Gradle 的情況下運行程序,便于在團隊開發過程中統一 Gradle 構建的版本, 推薦使用 。
- gradle.properties :需手動創建,配置gradle環境變量,或配置自定義變量供 build.gradle 使用。
3. Gradle最佳實踐
接下來,講一下我個人使用 Gradle 的一些經驗。
- 修改 gradle-wrapper.properties 中的 Gradle 下載鏡像改為國內鏡像。
- 新建 gradle.properties 文件,配置 Gradle 參數,提升構建速度。
- 將 maven 倉庫地址改為國內地址
- 將經常變更的依賴包版本、 maven 庫地址等變量提取到 gradle.properties 里, build.gradle 可直接讀取使用。
- 使用 buildscript 方式引用 gradle plugins ,優點是可以使用自定義倉庫,且便于子模塊繼承。
- 新建 spring.gradle 配置文件,引用相關的 Spring 依賴包。
- 在 build.gradle 里添加引用本地jar包的語句,這樣配置后,倉庫中沒有的jar包,放到 src/libs 文件夾下就可以直接使用了,非常方便。
- 在 build.gradle 中添加一個拷貝 jar 包的 task ,在 build 或 bootJar 后執行,用于將子模塊打包后,拷貝到根目錄下。
4. 項目模塊劃分
4.1. 拆分思路
新項目默認是一個單模塊的 SpringBoot 工程,而我們要將其改造為一個多模塊項目,思路是,將項目拆分為多個子模塊,分為三類: 服務、模塊、組件 :
- 項目 :最頂級,與服務是一對多的關系,本項目為根目錄;
- 服務 :對應一個可啟動的 SpringBoot 工程,一般只有一個啟動類,建議根據服務器資源和團隊規模劃分,與模塊是一對多的關系,位置在 services 包下;
- 模塊 :對應一個完整的業務,模塊間邊界清晰,將不同的業務解耦,便于擴展和維護,位置在 modules 包下;
- 組件 :將公用的代碼部分提取為一個個組件,供不同的模塊調用,與模塊是多對多的關系,位置在 components 包下。
4.2. 拆分實踐
- 服務 :創建一個示例服務:demo-boot
- 模塊 :只是個框架,沒有承載業務,象征性的建一個系統管理模塊:demo-system ,任何系統都能用到;
- 組件 :建一個放工具類的組件:demo-common ,所有模塊都會用到。
4.3. 具體配置
- 聲明子模塊 :在根目錄下的 settings.gradle 里聲明各個模塊:
- 服務公共依賴 :在 services/build.gradle 里引用一些所有服務公用的一些依賴包,這里使用了 subprojects,表示應用于所有 services 包下的子模塊,我們通過 sourceSet 的方式將根目錄 src 下的文件,作為公共代碼集成到每個服務中。
- 服務包含模塊 :在 services/demo-boot/build.gradle 里引用模塊 demo-system
- 模塊公共依賴 :在 modules/build.gradle 里引用一些所有模塊公用的一些依賴包,這里我們引用本地 src/libs 文件夾下的本地jar包。
- 模塊包含組件 :在 modules/demo-system/build.gradle 里引用組件 demo-common
4.4. 代碼結構
每次修改 Gradle 配置后,需要刷新生效(可改為自動)
-
模塊
+關注
關注
7文章
2695瀏覽量
47431 -
JAVA
+關注
關注
19文章
2966瀏覽量
104702 -
程序
+關注
關注
117文章
3785瀏覽量
81003 -
spring
+關注
關注
0文章
340瀏覽量
14338 -
gradle
+關注
關注
0文章
26瀏覽量
708
發布評論請先 登錄
相關推薦
評論