自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Gradle構(gòu)建多模塊項(xiàng)目

開發(fā) 前端
本文將從無到有創(chuàng)建一個用 Gradle 構(gòu)建的多模塊 Spring Boot 項(xiàng)目,JDK 版本為8,IDEA 版本為 2022.3.1 。

哈嘍,大家好,我是指北君。

今天和大家分享一下使用 Gradle 構(gòu)建多模塊項(xiàng)目。

0. 前言

相比起 Maven 的 XML 配置方式,Gradle 提供了一套簡明的 DSL 用于構(gòu)建Java 項(xiàng)目,使我們就像編寫程序一樣編寫項(xiàng)目構(gòu)建腳本。

本文將從無到有創(chuàng)建一個用 Gradle 構(gòu)建的多模塊 Spring Boot 項(xiàng)目,JDK 版本為8,IDEA 版本為 2022.3.1 。

1. 創(chuàng)建項(xiàng)目

打開IDEA,選擇菜單:File -> New -> Project,在其中找到 Spring Initializr,創(chuàng)建一個全新的 demo 項(xiàng)目,創(chuàng)建成功后結(jié)構(gòu)如下:

圖片

之后,程序會自動下載 Gradle 安裝包,并且通過 Gradle 下載和引入的 jar 包。由于默認(rèn)使用的鏡像速度較慢,我們可以先取消下載,等后面配置好國內(nèi)鏡像后再重新下載,當(dāng)然也可以慢慢等。

2. Gradle說明

在這里就不介紹Gradle 的優(yōu)缺點(diǎn)了,只說一下本項(xiàng)目涉及的部分:

  • build.gradle:管理依賴包的配置文件(相當(dāng)于Maven的pom.xml)。
  • gradlew:Gradle 命令的包裝,當(dāng)機(jī)器上沒有安裝 Gradle 時,可以直接用 gradlew 命令來構(gòu)建項(xiàng)目。
  • settings.gradle:可以視為多模塊項(xiàng)目的總目錄, Gradle 通過它來構(gòu)建各個模塊,并組織模塊間的關(guān)系。
  • gradle/wrapper包:Gradle 的一層包裝,能夠讓機(jī)器在不安裝 Gradle 的情況下運(yùn)行程序,便于在團(tuán)隊(duì)開發(fā)過程中統(tǒng)一 Gradle 構(gòu)建的版本,推薦使用。
  • gradle.properties:需手動創(chuàng)建,配置gradle環(huán)境變量,或配置自定義變量供 build.gradle 使用。

3. Gradle最佳實(shí)踐

接下來,講一下我個人使用 Gradle 的一些經(jīng)驗(yàn)。

修改 gradle-wrapper.properties 中的 Gradle 下載鏡像改為國內(nèi)鏡像。

圖片

新建 gradle.properties 文件,配置 Gradle 參數(shù),提升構(gòu)建速度。

圖片

將 maven 倉庫地址改為國內(nèi)地址

將經(jīng)常變更的依賴包版本、 maven 庫地址等變量提取到 gradle.properties 里, build.gradle 可直接讀取使用。

圖片

使用 buildscript 方式引用 gradle plugins ,優(yōu)點(diǎn)是可以使用自定義倉庫,且便于子模塊繼承。

圖片

新建 spring.gradle 配置文件,引用相關(guān)的 Spring 依賴包。

圖片

在 build.gradle 里添加引用本地jar包的語句,這樣配置后,倉庫中沒有的jar包,放到 src/libs 文件夾下就可以直接使用了,非常方便。

圖片

圖片

在 build.gradle 中添加一個拷貝 jar 包的 task ,在 build 或 bootJar 后執(zhí)行,用于將子模塊打包后,拷貝到根目錄下。

圖片

4. 項(xiàng)目模塊劃分

4.1. 拆分思路

新項(xiàng)目默認(rèn)是一個單模塊的 SpringBoot 工程,而我們要將其改造為一個多模塊項(xiàng)目,思路是,將項(xiàng)目拆分為多個子模塊,分為三類:服務(wù)、模塊、組件:

項(xiàng)目:最頂級,與服務(wù)是一對多的關(guān)系,本項(xiàng)目為根目錄;

服務(wù):對應(yīng)一個可啟動的 SpringBoot 工程,一般只有一個啟動類,建議根據(jù)服務(wù)器資源和團(tuán)隊(duì)規(guī)模劃分,與模塊是一對多的關(guān)系,位置在 services 包下;

模塊:對應(yīng)一個完整的業(yè)務(wù),模塊間邊界清晰,將不同的業(yè)務(wù)解耦,便于擴(kuò)展和維護(hù),位置在 modules 包下;

組件:將公用的代碼部分提取為一個個組件,供不同的模塊調(diào)用,與模塊是多對多的關(guān)系,位置在 components 包下。?

4.2. 拆分實(shí)踐

服務(wù):創(chuàng)建一個示例服務(wù):demo-boot

模塊:只是個框架,沒有承載業(yè)務(wù),象征性的建一個系統(tǒng)管理模塊:demo-system ,任何系統(tǒng)都能用到;

組件:建一個放工具類的組件:demo-common ,所有模塊都會用到。

4.3. 具體配置

聲明子模塊:在根目錄下的 settings.gradle 里聲明各個模塊:

圖片

服務(wù)公共依賴:在 services/build.gradle 里引用一些所有服務(wù)公用的一些依賴包,這里使用了 subprojects,表示應(yīng)用于所有 services 包下的子模塊,我們通過 sourceSet 的方式將根目錄 src 下的文件,作為公共代碼集成到每個服務(wù)中。

圖片

服務(wù)包含模塊:在 services/demo-boot/build.gradle 里引用模塊 demo-system

圖片

模塊公共依賴:在 modules/build.gradle 里引用一些所有模塊公用的一些依賴包,這里我們引用本地 src/libs 文件夾下的本地jar包。

圖片

模塊包含組件:在 modules/demo-system/build.gradle 里引用組件 demo-common

圖片

4.4. 代碼結(jié)構(gòu)

每次修改 Gradle 配置后,需要刷新生效(可改為自動)

圖片

責(zé)任編輯:武曉燕 來源: Java技術(shù)指北
相關(guān)推薦

2013-07-18 17:00:12

Gradle構(gòu)建AndAndroid開發(fā)Android學(xué)習(xí)

2017-04-13 14:55:07

AndroidGradle多模塊構(gòu)建

2021-01-11 09:17:49

GitLabCIMonorepoDocker

2023-10-31 16:37:55

大型語言模型人工智能

2024-11-25 08:00:00

2015-01-26 09:57:47

GradleMaven Centr

2021-01-07 08:43:11

微服務(wù)pipelineGitLabGroup

2024-01-11 16:24:12

人工智能RAG

2017-04-11 09:07:55

AndroidGradle構(gòu)建變體

2022-01-07 15:11:27

項(xiàng)目Go 框架

2020-04-23 08:55:01

LinuxGradle工具

2024-05-15 08:20:08

GradleMaven工具

2015-03-20 10:01:50

Android StuGradle

2021-05-19 14:46:41

Space XRust語言

2025-03-26 01:00:00

2021-05-17 09:27:07

項(xiàng)目實(shí)戰(zhàn)優(yōu)化項(xiàng)目構(gòu)建時間

2014-04-22 10:19:40

objection模塊化開發(fā)iOS

2023-11-10 08:00:00

微服務(wù)架構(gòu)開發(fā)

2009-12-16 13:53:51

Ruby多繼承

2020-11-05 10:40:07

Spring Boot多模塊Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號