?Gradle真能干掉Maven?今天體驗(yàn)了一把,賊爽!

作為Java Web開發(fā),很多朋友都在使用Maven作為構(gòu)建工具。Gradle作為Google大力擁護(hù)的構(gòu)建工具,被廣泛地運(yùn)用到了Android開發(fā)中,在Java Web方面也大有取代Maven上位的趨勢(shì)。Gradle真的有那么香么?今天我們來體驗(yàn)一把,以我的腳手架項(xiàng)目
mall-tiny為例,看看Gradle到底行不行!
Gradle簡(jiǎn)介
Gradle是一款開源的自動(dòng)化構(gòu)建工具,使用靈活且性能極佳,可以使用 Groovy 或者 Kotlin DSL 來編寫構(gòu)建腳本。從移動(dòng)開發(fā)到微服務(wù),從小團(tuán)隊(duì)到大企業(yè),Gradle提高了開發(fā)人員的生產(chǎn)力。
Gradle具有如下特性:
可以高度定制:Gradle使用可定制、可擴(kuò)展的方式進(jìn)行建模,非常靈活。 構(gòu)建速度快:Gradle通過重用先前執(zhí)行的輸出,僅處理已更改的輸入且通過并行執(zhí)行任務(wù)來快速完成構(gòu)建。 功能強(qiáng)大:Gradle是Android的官方構(gòu)建工具,并支持許多流行的語言和技術(shù)。
Gradle使用體驗(yàn)
接下來將把我的腳手架項(xiàng)目
mall-tiny從使用Maven改造成使用Gradle,來體驗(yàn)一把Gradle的使用。
創(chuàng)建Gradle項(xiàng)目
首先需要下載Gradle的安裝包,建議下載帶源碼的完整版本(否則Gradle中屬性點(diǎn)進(jìn)去不會(huì)有注釋)下載地址:https://gradle.org/releases/

下載完成后進(jìn)行解壓,之后在IDEA中創(chuàng)建一個(gè)SpringBoot項(xiàng)目;

選擇創(chuàng)建一個(gè)Gradle項(xiàng)目;

之后選擇使用我們之前下載好的Gradle版本,輸入你解壓的目錄;

項(xiàng)目創(chuàng)建完成后,一個(gè)非常簡(jiǎn)單的Gradle項(xiàng)目目錄結(jié)構(gòu)如下,需要注意的是 build.gradle和settings.gradle這兩個(gè)文件。

Gradle插件介紹
在新創(chuàng)建的build.gradle文件中,我們可以發(fā)現(xiàn)下面3個(gè)插件:
plugins {
id 'org.springframework.boot' version '2.3.0.RELEASE'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
org.springframework.boot
SpringBoot官方提供的Gradle插件,方便我們使用SpringBoot,通過修改version可以控制使用的SpringBoot版本。
io.spring.dependency-management
一個(gè)可以提供依賴版本管理功能的Gradle插件(類似于Maven)。
比如之前我們使用Maven管理Druid版本時(shí),會(huì)先在<dependencyManagement>中定義好依賴的版本。
<dependencyManagement>
<dependencies>
<!--集成druid連接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
</dependencyManagement>
然后在引入依賴的時(shí)候就無需再填寫版本號(hào)了,這樣做的好處就是可以統(tǒng)一依賴的版本。
<dependencies>
<!--集成druid連接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
</dependencies>
在Gradle中你可以這樣用,是不是簡(jiǎn)潔不少!
dependencies {
implementation 'com.alibaba:druid-spring-boot-starter'
}
dependencyManagement {
dependencies {
dependency 'com.alibaba:druid-spring-boot-starter:1.1.10'
}
}
java
Java插件將Java編譯、測(cè)試等常用功能添加到項(xiàng)目中,它是許多其他JVM語言Gradle插件的基礎(chǔ)。
Maven轉(zhuǎn)Gradle
Maven項(xiàng)目轉(zhuǎn)Gradle非常簡(jiǎn)單,只需要把
pom.xml中的依賴轉(zhuǎn)為build.gradle中的依賴即可。
比如說Hutool這個(gè)依賴,Maven中的寫法是這樣的:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.7</version>
</dependency>
Gradle中的寫法是這樣的,一行即可搞定:
dependencies {
implementation 'cn.hutool:hutool-all:4.5.7'
}
有時(shí)候Gradle下載依賴比較慢,這里將url修改為阿里云的Maven倉庫地址可以加速;
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
mavenCentral()
}
再來個(gè)完整的 build.gradle,已經(jīng)添加所有依賴;
plugins {
id 'org.springframework.boot' version '2.3.0.RELEASE'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.macro.mall.tiny'
version = '1.0.0-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-configuration-processor'
implementation 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
implementation 'com.alibaba:druid-spring-boot-starter'
implementation 'mysql:mysql-connector-java'
implementation 'io.springfox:springfox-swagger2'
implementation 'io.springfox:springfox-swagger-ui'
implementation 'io.swagger:swagger-models'
implementation 'io.swagger:swagger-annotations'
implementation 'cn.hutool:hutool-all'
implementation 'io.jsonwebtoken:jjwt'
implementation 'com.baomidou:mybatis-plus-boot-starter'
implementation 'com.baomidou:mybatis-plus-generator'
implementation 'org.apache.velocity:velocity-engine-core'
}
dependencyManagement {
dependencies {
dependency 'com.alibaba:druid-spring-boot-starter:1.1.10'
dependency 'mysql:mysql-connector-java:8.0.16'
dependency 'io.springfox:springfox-swagger2:2.9.2'
dependency 'io.springfox:springfox-swagger-ui:2.9.2'
dependency 'io.swagger:swagger-models:1.6.0'
dependency 'io.swagger:swagger-annotations:1.6.0'
dependency 'cn.hutool:hutool-all:4.5.7'
dependency 'io.jsonwebtoken:jjwt:0.9.0'
dependency 'com.baomidou:mybatis-plus-boot-starter:3.3.2'
dependency 'com.baomidou:mybatis-plus-generator:3.3.2'
dependency 'org.apache.velocity:velocity-engine-core:2.2'
}
}
test {
useJUnitPlatform()
}
最后你需要做的就是把原來的代碼都復(fù)制過來就行了,至此Gradle改造完成。

對(duì)比Maven
都說Gradle構(gòu)建速度快,官方自己也在說,我們將項(xiàng)目clean以后構(gòu)建下試試,看看到底有多快!
首先使用之前的Maven項(xiàng)目,直接clean之后再package,打包構(gòu)建下;

控制臺(tái)輸出如下,耗時(shí) 32s;

再使用現(xiàn)在的Gradle項(xiàng)目,也是clean之后再package(Gradle中使用bootjar命令),打包構(gòu)建下;

控制臺(tái)輸出如下,耗時(shí) 15s,快了不止一倍!

再放張官方的對(duì)比圖,Gradle構(gòu)建比Maven快1倍,那是妥妥的!

總結(jié)
Gradle作為Google官方推薦的構(gòu)建工具,確實(shí)很不錯(cuò)!如果你會(huì)寫Groovy腳本的話,使用起來是非常靈活的,而且語法簡(jiǎn)潔,構(gòu)建速度也很快!
參考資料
Gradle官方文檔:https://docs.gradle.org
項(xiàng)目源碼地址
https://github.com/macrozheng/mall-tiny/tree/gradle

往 期 推 薦 1、網(wǎng)曝IDEA2020.3.2,自動(dòng)注釋類和方法注釋模板配置
2、牛逼!IntelliJ IDEA居然支持視頻聊天了~速來嘗鮮!快來沖一波
4、知名國產(chǎn)網(wǎng)盤翻車?清空免費(fèi)用戶文件后,又開始清理付費(fèi)用戶資源
1、網(wǎng)曝IDEA2020.3.2,自動(dòng)注釋類和方法注釋模板配置
2、牛逼!IntelliJ IDEA居然支持視頻聊天了~速來嘗鮮!快來沖一波
4、知名國產(chǎn)網(wǎng)盤翻車?清空免費(fèi)用戶文件后,又開始清理付費(fèi)用戶資源

點(diǎn)分享

點(diǎn)收藏

點(diǎn)點(diǎn)贊

點(diǎn)在看

