作为Java Web开发,很多敌人都在应用Maven作为构建工具。Gradle作为Google鼎力拥戴的构建工具,被宽泛地使用到了Android开发中,在Java Web方面也大有取代Maven上位的趋势。Gradle真的有那么香么?明天咱们来体验一把,以我的脚手架我的项目mall-tiny
为例,看看Gradle到底行不行!
SpringBoot实战电商我的项目mall(40k+star)地址:https://github.com/macrozheng/mall
Gradle简介
Gradle是一款开源的自动化构建工具,应用灵便且性能极佳,能够应用 Groovy 或者 Kotlin DSL 来编写构建脚本。从挪动开发到微服务,从小团队到大企业,Gradle进步了开发人员的生产力。
Gradle具备如下个性:
- 能够高度定制:Gradle应用可定制、可扩大的形式进行建模,非常灵活。
- 构建速度快:Gradle通过重用先前执行的输入,仅解决已更改的输出且通过并行执行工作来疾速实现构建。
- 功能强大:Gradle是Android的官网构建工具,并反对许多风行的语言和技术。
Gradle应用体验
接下来将把我的脚手架我的项目mall-tiny
从应用Maven革新成应用Gradle,来体验一把Gradle的应用。
创立Gradle我的项目
- 首先须要下载Gradle的安装包,倡议下载带源码的残缺版本(否则Gradle中属性点进去不会有正文)下载地址:https://gradle.org/releases/
- 下载实现后进行解压,之后在IDEA中创立一个SpringBoot我的项目;
- 抉择创立一个Gradle我的项目;
- 之后抉择应用咱们之前下载好的Gradle版本,输出你解压的目录;
- 我的项目创立实现后,一个非常简单的Gradle我的项目目录构造如下,须要留神的是
build.gradle
和settings.gradle
这两个文件。
Gradle插件介绍
在新创建的build.gradle
文件中,咱们能够发现上面3个插件:
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
一个能够提供依赖版本治理性能的Gradle插件(相似于Maven)。
比方之前咱们应用Maven治理Druid版本时,会先在<dependencyManagement>
中定义好依赖的版本。
<dependencyManagement> <dependencies> <!--集成druid连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> </dependencies></dependencyManagement>
而后在引入依赖的时候就无需再填写版本号了,这样做的益处就是能够对立依赖的版本。
<dependencies> <!--集成druid连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> </dependency></dependencies>
在Gradle中你能够这样用,是不是简洁不少!
dependencies { implementation 'com.alibaba:druid-spring-boot-starter'}dependencyManagement { dependencies { dependency 'com.alibaba:druid-spring-boot-starter:1.1.10' }}
java
Java插件将Java编译、测试等罕用性能增加到我的项目中,它是许多其余JVM语言Gradle插件的根底。
Maven转Gradle
Maven我的项目转Gradle非常简单,只须要把pom.xml
中的依赖转为build.gradle
中的依赖即可。
- 比如说Hutool这个依赖,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'}
- 有时候Gradle下载依赖比较慢,这里将url批改为阿里云的Maven仓库地址能够减速;
repositories { maven { url 'https://maven.aliyun.com/repository/public' } mavenCentral()}
- 再来个残缺的
build.gradle
,曾经增加所有依赖;
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()}
- 最初你须要做的就是把原来的代码都复制过去就行了,至此Gradle革新实现。
比照Maven
都说Gradle构建速度快,官网本人也在说,咱们将我的项目clean当前构建下试试,看看到底有多快!
- 首先应用之前的Maven我的项目,间接clean之后再package,打包构建下;
- 控制台输入如下,耗时
32s
;
- 再应用当初的Gradle我的项目,也是clean之后再package(Gradle中应用bootjar命令),打包构建下;
- 控制台输入如下,耗时
15s
,快了不止一倍!
- 再放张官网的比照图,Gradle构建比Maven快1倍,那是妥妥的!
总结
Gradle作为Google官网举荐的构建工具,的确很不错!如果你会写Groovy脚本的话,应用起来是非常灵活的,而且语法简洁,构建速度也很快!
参考资料
Gradle官网文档:https://docs.gradle.org
我的项目源码地址
https://github.com/macrozheng...
本文 GitHub https://github.com/macrozheng/mall-learning 曾经收录,欢送大家Star!