【Java】【Gradle】Gradle構建SpringBoot專案,Gradle模組化管理
為什麼我要使用Gradle
- 我是個Android開發者,對Gradle接觸較多,較為熟悉,使用Gradle對我問題不大
- Gradle比Maven更加簡潔靈活,程式碼看起來更加美觀
- 我愛研究探索,喜歡折騰,想嘗試新事物。用Gradle構建SpringBoot專案是我自己想出來的,後來去網上一查,還真的可以這樣做
- 用了一段時間熟悉了之後,發現還是挺方便的。但是Idea中的Gradle和Studio中的Gradle用法還是稍有區別的,因為它們的主程式版本和編譯外掛都不一樣。所以我整理了一下使用方法,分享給大家,這樣大家就可以快速上手,少走彎路
建立父級工程
由於一個工程可能包含多個模組,因此我們需要有個父級工程來包含它們,以方便以後的管理
即便我們的程式碼只有一個模組,從規範的角度來說,也應當有個父級工程,以方便日後的擴充套件
我們新建一個名為【project-hello】的資料夾,作為父級工程的存放位置
由於父級工程只是一個容器,所以我們不需要程式碼目錄,可以從專案結構中刪除,當然也可以留下來用於存放測試程式碼
在【Project Structure】介面中,將【src目錄】標記為【Excluded】,確定後手動刪除該資料夾即可
建立子模組
在工程目錄上右鍵,【New】-【Module】,選擇【Gradle】和【Java】,和建立工程時操作一樣,即可建立多個子模組
引入外部模組
如果我們不想新建模組,而是希望使用已有的程式碼作為模組,那麼有兩種方法
一種是將該模組的程式碼直接拷到當前工程下,在【settings.gradle】中新增【include ‘xxx’】即可
另一種方法是單獨寫一行指令碼,來指定該模組的位置,但是Gradle只支援通過相對路徑來指定位置
如果不是多個工程共享同一份程式碼的話,建議使用第一種方式,比較放在一起更加容易維護、備份、打包
模組間依賴
在模組的【build.gradle】中新增以下指令碼,即可引用其它模組,外部模組也是一樣的,因此模組名都已經在工程中定義了,不管是同工程的還是外部的,都可以直接使用
dependencies {
implementation project(":lib-commons")
implementation project(":lib-external")
}
新增SpringBoot依賴
直到現在,我們尚未提及任何關於Spring的事情
其實Spring專案和Java專案並無區別,只是多了相應的依賴庫和Spring編譯外掛而已
我們只需在【build.gradle】增加相關配置,就可以把一個普通的Java專案升級為SpringBoot後臺專案
plugins {
id 'org.springframework.boot' version '2.1.6.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
repositories {
mavenCentral()
}
dependencies {
//模組引用
implementation project(":lib-commons")
implementation project(":lib-external")
//SpringBoot
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
//MysqlConnector
implementation 'mysql:mysql-connector-java'
//MybatisPlus
implementation 'com.baomidou:mybatis-plus-boot-starter:3.1.2'
//通用基礎庫
implementation 'org.apache.commons:commons-lang3:3.9'
implementation 'commons-codec:commons-codec:1.12'
implementation 'jaxen:jaxen:1.2.0'
implementation 'javax.annotation:javax.annotation-api:1.2'
//Json Gson
implementation 'org.json:json:20180813'
implementation 'com.google.code.gson:gson:2.8.5'
//網路請求庫:OkHttp
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.squareup.okio:okio:1.14.1'
//Socket庫:SocketIO
implementation 'com.corundumstudio.socketio:netty-socketio:1.7.17'
//Lombok註解外掛
implementation 'org.projectlombok:lombok:1.16.8'
annotationProcessor 'org.projectlombok:lombok:1.16.8'
//控制檯彩色字型庫
implementation 'org.fusesource.jansi:jansi:1.18'
}
新增SpringBoot配置檔案
【resources/application.properties】是SpringBoot預設的配置檔案,我們需要新增一些必要配置服務才能啟動
比如專案地址,專案埠,資料庫地址,資料庫帳號密碼等等,這裡資料庫大家需要改成自己的可用資料庫
#服務地址
server.port=8001
server.servlet.context-path=/hello
server.servlet.session.timeout=2000s
#資料庫配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.8.83:3306/dwdb2
spring.datasource.username=root
spring.datasource.password=123456
除了【application.properties】這個檔案之外,我們還可以建立自己的配置檔案,用於儲存業務配置
建議不要把所有東西都寫在【application.properties】裡面,會影響可讀性,這個檔案只儲存Spring框架的配置即可
比如這裡我們就新建了一個【user_config.properties】檔案,我們可以自己通過【java.util.Properties】類來讀取配置
新增Application類
Application類是SpringBoot預設的啟動入口,其實一個空的SpringBoot專案只需要一個Application類就夠了
Application類的作用是啟動SpringBoot服務,SpringBoot服務啟動後,就會自動去檢索包目錄查詢所有的類檔案
SpringBoot服務根據註解來判斷是否需要建立對應的Controller,Mapper,Bean的例項
因此只有Application類是必需的,其它類都是根據需要來新增的
package com.easing.backend.tools;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/api")
public class ApiController {
@ResponseBody
@RequestMapping("/about")
public String about() {
return "a SpringBoot Project with Gradle";
}
}
手動修改工程
Gradle專案結構其實非常簡單,無非就是三點:
工程通過settings.gradle檔案來定義子模組
模組通過build.gradle來定義引用的庫或其它模組
通過Project Structure選單來配置哪些目錄是程式碼,哪些目錄是資源,哪些目錄應該被排除出專案
瞭解專案結構和構建原理,可以加深我們對構建工具的理解,出了問題時可以自己去查詢問題所在
如果不理解檔案之間的關聯,只會通過視覺化選單來操作,出了問題經常就會手足無措
Gradle專案結構一般如下
main旁邊的test資料夾是用於單元測試的目錄,如果不需要可以按兩次Delete刪除
第一次Delete將目錄從模組中移除,第二次Delete徹底刪除檔案
原始碼下載
下載地址:a SpringBoot Project with Gradle
原始碼使用說明
【project-hello】是工程根目錄,開啟工程時,請開啟這個目錄
【lib-external】屬於外部模組,是為了演示引入外部模組的,並不屬於工程目錄
注意事項
Gradle中的依賴,除了SpringBoot和通用基礎庫部分,其它的可以刪除
因為你們的資料庫環境,IDEA版本,外掛版本,和我的都不一樣,根據經驗,這些不相容可能會導致編譯活啟動失敗
另外,有的版本的IDEA不能在識別Gradle工程上不是很完善,不會自動生成程式的啟動入口,需要自己建立
相關文章
- Gradle構建SpringBoot專案GradleSpring Boot
- 使用gradle構建springboot專案GradleSpring Boot
- springboot gradle demo (使用 Gradle 構建的 Spring Boot專案)Spring BootGradle
- Gradle入門及SpringBoot專案構建GradleSpring Boot
- IDEA使用Gradle構建SpringBoot專案工程IdeaGradleSpring Boot
- 在gradle中構建java專案GradleJava
- Gradle之多專案構建Gradle
- Gradle自動化專案構建之Gradle學習及實戰Gradle
- Chapter5:使用Gradle管理多模組構建APTGradle
- 利用IDEA建立gradle構建的Java多模組專案(太清晰了)IdeaGradleJava
- 【Java】【專案構建】Idea中設定Gradle/Maven多模組依賴JavaIdeaGradleMaven
- Gradle快速構建Spring Boot專案GradleSpring Boot
- Gradle自動實現Android元件化模組構建GradleAndroid元件化
- Gradle學習系列----多專案構建Gradle
- Gradle學習系列—-多專案構建Gradle
- 專案構建工具 GradleGradle
- Gradle自動化專案構建之快速掌握GroovyGradle
- 通過Gradle自動實現Android元件化模組構建GradleAndroid元件化
- IntelliJ IDEA 建立Gradle/Java 專案IntelliJIdeaGradleJava
- 用Idea 2019.3+和Gradle5.2.1+ 構建SpringBoot多專案(二)IdeaGradleSpring Boot
- gradle構建springboot專案瘦身,外部依賴jar的終極方法GradleSpring BootJAR
- Gradle中的差異化構建Gradle
- Gradle入門系列(五)——Gradle其它模組與Plugin外掛GradlePlugin
- 嚐鮮:Gradle構建SpringBoot(2.3.1最新版)GradleSpring Boot
- 使用gradle管理spring-boot專案GradleSpringboot
- gradle構建spring原始碼GradleSpring原始碼
- Gradle for Android ( 構建變體 )GradleAndroid
- gradle中的增量構建Gradle
- Idea下構建基於Gradle的Spring Boot專案IdeaGradleSpring Boot
- java~springboot~gradle裡的docker整合JavaSpring BootGradleDocker
- Gradle系列(三) Gradle配置構建和渠道包Gradle
- 構建第一個基於 Gradle 的 Spring Boot 專案GradleSpring Boot
- idea gradle 專案依賴IdeaGradle
- 使用IDEA建立gradle專案IdeaGradle
- 使用idea新建springBoot+Gradle專案(超詳細)IdeaSpring BootGradle
- Gradle 與 AGP 構建 API: 配置您的構建檔案GradleAPI
- Gradle 簽名的配置檔案 gradle.propertiesGradle
- AndroidStudio配置settings.gradle在工程中構建多個專案AndroidGradle