乐趣区

关于java:Gradle真能干掉Maven今天体验了一把贼爽

作为 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.gradlesettings.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!

退出移动版