使用gradle管理spring-boot專案

Tony-devj發表於2020-07-22


在前段時間,spring的原始碼從maven轉換到了gradle。同為構建工具,為什麼spring要用的gradle而放棄maven呢?

gradle與maven的不同點

  • gradle是一個使用基於Groovy的DSL(領域特定語言)的構建自動化系統。
  • maven是一個軟體專案管理系統,主要用於Java專案。
  • gradle 不使用XML檔案來宣告專案配置。
  • maven使用XML檔案來宣告專案,其依賴項,構建順序及其必需的外掛。
  • gradle基於完成工作的任務依賴關係圖。
  • maven基於固定模型和線性模型的階段。
  • 在Gradle中,主要目標是為專案新增功能。
  • 在Maven中,主要目標與專案階段有關。
  • gradle通過跟蹤輸入和輸出任務來避免工作,並且僅執行已更改的任務。因此,它提供了更快的效能。
  • maven不使用構建快取。因此,它的構建時間比Gradle慢。
  • Gradle是高度可定製的;它提供了廣泛的IDE支援自定義版本。
  • Maven的引數和要求數量有限,因此自定義有點複雜。
  • Gradle避免了Java的編譯。
  • 在Maven中,編譯是必需的。
    還有很多不同的地方,我只總結了以上幾點。

使用gradle建立spring-boot專案

既然spring的原始碼轉換為了gradle,為了和spring編譯工具一致,現在開始使用gradle進行spring-boot專案的管理。

建立資料夾

在指定的資料夾下面建立資料夾,如我在D盤:

D:/> mkdir spring-boot-study-gradle

進入資料夾

D:/> cd spring-boot-study-gradle
##建立gradle專案 初始化
D:/spring-boot-study-gradle> gradle init
##選擇生成的型別,直接回車就好了
Select type of project to generate:
  1: basic
  2: application
  3: library
  4: Gradle plugin
Enter selection (default: basic) [1..4]
##選擇先關的指令碼語言,直接回車就好了
Select build script DSL:
  1: Groovy
  2: Kotlin
Enter selection (default: Groovy) [1..2]
##選擇專案的名稱,預設就是資料夾名,可以根據自己需求自己寫
Project name (default: test):
##構建成功
> Task :init
Get more help with your project: https://guides.gradle.org/creating-new-gradle-builds

BUILD SUCCESSFUL in 2m 5s
2 actionable tasks: 2 executed

spring-boot-study-gradle

因為這個專案是主專案,以後相關的spring-boot學習的專案都在這個目錄下面。我們在當前目錄下建立一個子專案的資料夾:

D:/spring-boot-study-gradle> mkdir spring-boot-study-gradle-demo1
##在spring-boot-study-gradle-demo1建立一個build.gradle(gradle構建檔案),setting.gradle(gradle設定檔案)
D:/spring-boot-study-gradle/spring-boot-study-gradle-demo1>type nul>build.gradle
D:/spring-boot-study-gradle/spring-boot-study-gradle-demo1>type nul>settings.gradle
#將相關內容寫入build.gradle和setting.gradle(建議用相關idea編輯,我本地使用的vsCode)
D:/spring-boot-study-gradle/spring-boot-study-gradle-demo1>echo "mainClassName = 'org.tony.springboot.demo1.Main'" > build.gradle 
##mainClassName 指定啟動類
D:/spring-boot-study-gradle/spring-boot-study-gradle-demo1>echo 'rootProject.name = "spring-boot-study-gradle-demo1"' > settings.gradle 
##rootProject.name指定專案的名稱

之後就可以在vsCode中去建立相關的java檔案等操作。
因為spring-boot-study-gradle是父工程,我們需要修改spring-boot-study-gradle的build.gradle和settings.gradle.

  • build.gradle
//指定所有專案的maven地址
allprojects{
    repositories {
        maven {url 'http://maven.aliyun.com/nexus/content/groups/public/'}
    }
}
//指定子專案的版本
subprojects{
    version="1.0"
}
//相關spring-boot-study-gradle-demo1的配置
project("spring-boot-study-gradle-demo1"){
	//申請相關的外掛
    apply plugin:'java-library'
    apply plugin: 'application'
	//新增相應的依賴
    dependencies{
        compile('org.springframework.boot:spring-boot-starter-web:2.3.1.RELEASE')
        testCompile('junit:junit:4.13')
    }
}
  • settings.gradle
rootProject.name = 'spring-boot-cloud-study-gradle'
//匯入spring-boot-study-gradle-demo1子專案,將子專案和父專案關聯
include "spring-boot-study-gradle-demo1"

目錄結構如圖

在這裡插入圖片描述
之後就可以進行相關的程式碼開發了。

相關文章