New -> Project,在其中找到 Spring Initializr,創(chuàng)建一個(gè)全新的 demo 項(xiàng)目,創(chuàng)建成功后結(jié)構(gòu)如下: 之后,程序會(huì)自動(dòng)下載 Gradle 安裝包,并且通過(guò) Gradle 下載和引入的 jar 包。由于默認(rèn)使用的鏡像速" />

chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Gradle構(gòu)建的多模塊Spring Boot項(xiàng)目

科技綠洲 ? 來(lái)源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-09-25 14:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

0. 前言

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

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

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

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

圖片

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

2. Gradle說(shuō)明

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

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

3. Gradle最佳實(shí)踐

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

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

圖片

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

圖片

  1. 將 maven 倉(cāng)庫(kù)地址改為國(guó)內(nèi)地址
  2. 將經(jīng)常變更的依賴(lài)包版本、 maven 庫(kù)地址等變量提取到 gradle.properties 里, build.gradle 可直接讀取使用。

圖片

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

圖片

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

圖片

  1. 在 build.gradle 里添加引用本地jar包的語(yǔ)句,這樣配置后,倉(cāng)庫(kù)中沒(méi)有的jar包,放到 src/libs 文件夾下就可以直接使用了,非常方便。

圖片圖片

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

圖片

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

4.1. 拆分思路

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

  1. 項(xiàng)目 :最頂級(jí),與服務(wù)是一對(duì)多的關(guān)系,本項(xiàng)目為根目錄;
  2. 服務(wù) :對(duì)應(yīng)一個(gè)可啟動(dòng)的 SpringBoot 工程,一般只有一個(gè)啟動(dòng)類(lèi),建議根據(jù)服務(wù)器資源和團(tuán)隊(duì)規(guī)模劃分,與模塊是一對(duì)多的關(guān)系,位置在 services 包下;
  3. 模塊 :對(duì)應(yīng)一個(gè)完整的業(yè)務(wù),模塊間邊界清晰,將不同的業(yè)務(wù)解耦,便于擴(kuò)展和維護(hù),位置在 modules 包下;
  4. 組件 :將公用的代碼部分提取為一個(gè)個(gè)組件,供不同的模塊調(diào)用,與模塊是多對(duì)多的關(guān)系,位置在 components 包下。

4.2. 拆分實(shí)踐

  1. 服務(wù) :創(chuàng)建一個(gè)示例服務(wù):demo-boot
  2. 模塊 :只是個(gè)框架,沒(méi)有承載業(yè)務(wù),象征性的建一個(gè)系統(tǒng)管理模塊:demo-system ,任何系統(tǒng)都能用到;
  3. 組件 :建一個(gè)放工具類(lèi)的組件:demo-common ,所有模塊都會(huì)用到。

4.3. 具體配置

  1. 聲明子模塊 :在根目錄下的 settings.gradle 里聲明各個(gè)模塊:

圖片

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

圖片

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

圖片

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

圖片

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

圖片

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

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

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2811

    瀏覽量

    52277
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2992

    瀏覽量

    114735
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3832

    瀏覽量

    84331
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    15566
  • gradle
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    970
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Spring Boot如何實(shí)現(xiàn)異步任務(wù)

    Spring Boot 提供了多種方式來(lái)實(shí)現(xiàn)異步任務(wù),這里介紹三種主要實(shí)現(xiàn)方式。 1、基于注解 @Async @Async 注解是 Spring 提供的一種輕量級(jí)異步方法實(shí)現(xiàn)方式,它可以標(biāo)記在方法上
    的頭像 發(fā)表于 09-30 10:32 ?1897次閱讀

    Spring Boot Starter需要些什么

    pulsar-spring-boot-starter是非常有必要的,在此之前,我們先看看一個(gè)starter需要些什么。 Spring Boot Starter spring-boot
    的頭像 發(fā)表于 09-25 11:35 ?1188次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> Starter需要些什么

    啟動(dòng)Spring Boot項(xiàng)目應(yīng)用的三種方法

    的讀取,開(kāi)啟注解4)配置日志文件...配置完成之后部署tomcat 調(diào)試。但是如果使用spring boot呢?很簡(jiǎn)單,我僅僅只需要非常少的幾個(gè)配置就可以迅速方便的搭建起來(lái)一套web項(xiàng)目或者是
    發(fā)表于 01-14 17:33

    Spring Boot嵌入式Web容器原理是什么

    Spring Boot嵌入式Web容器原理Spring Boot的目標(biāo)是構(gòu)建“非常容易創(chuàng)建、獨(dú)立、產(chǎn)品級(jí)別的基于
    發(fā)表于 12-16 07:57

    Spring Boot從零入門(mén)1 詳述

    在開(kāi)始學(xué)習(xí)Spring Boot之前,我之前從未接觸過(guò)Spring相關(guān)的項(xiàng)目,Java基礎(chǔ)還是幾年前自學(xué)的,現(xiàn)在估計(jì)也忘得差不多了吧,寫(xiě)Spring
    的頭像 發(fā)表于 12-10 22:18 ?977次閱讀

    Spring認(rèn)證」什么是Spring GraphQL?

    這個(gè)項(xiàng)目建立在 Boot 2.x 上,但它應(yīng)該與最新的 Boot2.4.x5 相關(guān)。 要?jiǎng)?chuàng)建項(xiàng)目,請(qǐng)轉(zhuǎn)到start.spring.io并為要
    的頭像 發(fā)表于 08-10 14:08 ?1179次閱讀
    「<b class='flag-5'>Spring</b>認(rèn)證」什么是<b class='flag-5'>Spring</b> GraphQL?

    Spring Boot特有的實(shí)踐

    Spring Boot是最流行的用于開(kāi)發(fā)微服務(wù)的Java框架。在本文中,我將與你分享自2016年以來(lái)我在專(zhuān)業(yè)開(kāi)發(fā)中使用Spring Boot所采用的最佳實(shí)踐。這些內(nèi)容是基于我的個(gè)人經(jīng)驗(yàn)
    的頭像 發(fā)表于 09-29 10:24 ?1294次閱讀

    強(qiáng)大的Spring Boot 3.0要來(lái)了

    和 Bugfix。 Spring Boot 3.0 的開(kāi)發(fā)工作始于實(shí)驗(yàn)性的 Spring Native,旨在為 GraalVM 原生鏡像提供支持。 在該版本中,開(kāi)發(fā)者現(xiàn)在可以使用標(biāo)準(zhǔn) Spri
    的頭像 發(fā)表于 10-31 11:17 ?2562次閱讀

    怎樣使用Kiuwan保護(hù)Spring Boot應(yīng)用程序呢?

    Spring Boot 提供了快速輕松地構(gòu)建基于Spring 的應(yīng)用程序所需的工具、功能和依賴(lài)項(xiàng)。
    的頭像 發(fā)表于 03-16 09:10 ?1213次閱讀

    如何通過(guò)IDEA快速建立一個(gè)Spring Boot項(xiàng)目

    在說(shuō)Spring Boot之前先要了解Spring,那么Spring是什么呢?Spring 框架是一個(gè)分層的、面向切面的Java應(yīng)用程序的一
    的頭像 發(fā)表于 03-17 15:00 ?1654次閱讀
    如何通過(guò)IDEA快速建立一個(gè)<b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b><b class='flag-5'>項(xiàng)目</b>

    Spring Boot Web相關(guān)的基礎(chǔ)知識(shí)

    上一篇文章我們已經(jīng)學(xué)會(huì)了如何通過(guò)IDEA快速建立一個(gè)Spring Boot項(xiàng)目,還介紹了Spring Boot
    的頭像 發(fā)表于 03-17 15:03 ?1051次閱讀

    Spring Boot Actuator快速入門(mén)

    不知道大家在寫(xiě) Spring Boot 項(xiàng)目的過(guò)程中,使用過(guò) Spring Boot Actuator 嗎?知道
    的頭像 發(fā)表于 10-09 17:11 ?1050次閱讀

    Spring Boot啟動(dòng) Eureka流程

    在上篇中已經(jīng)說(shuō)過(guò)了 Eureka-Server 本質(zhì)上是一個(gè) web 應(yīng)用的項(xiàng)目,今天就來(lái)看看 Spring Boot 是怎么啟動(dòng) Eureka 的。 Spring
    的頭像 發(fā)表于 10-10 11:40 ?1359次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>啟動(dòng) Eureka流程

    Spring Boot的啟動(dòng)原理

    可能很多初學(xué)者會(huì)比較困惑,Spring Boot 是如何做到將應(yīng)用代碼和所有的依賴(lài)打包成一個(gè)獨(dú)立的 Jar 包,因?yàn)閭鹘y(tǒng)的 Java 項(xiàng)目打包成 Jar 包之后,需要通過(guò) -classpath 屬性
    的頭像 發(fā)表于 10-13 11:44 ?1102次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的啟動(dòng)原理

    Spring Boot 的設(shè)計(jì)目標(biāo)

    什么是Spring Boot Spring BootSpring 開(kāi)源組織下的一個(gè)子項(xiàng)目,
    的頭像 發(fā)表于 10-13 14:56 ?949次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 的設(shè)計(jì)目標(biāo)