找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2777

积分

0

好友

384

主题
发表于 昨天 08:03 | 查看: 0| 回复: 0

在当前的 Java Web 开发中,Maven 仍是许多开发者的默认构建工具。不过,作为 Google 大力推崇的构建工具,Gradle 不仅在 Android 开发领域占据主导,在 Java 后端项目中也展现出取代 Maven 的强劲势头。Gradle 的实际体验究竟如何?本文将以一个名为 mall-tiny 的脚手架项目为例,带你实际体验从 Maven 迁移到 Gradle 的全过程,并对比两者的构建性能。

Gradle简介

Gradle 是一款开源的自动化构建工具,它以高度的灵活性和卓越的性能著称,支持使用 Groovy 或 Kotlin DSL 编写构建脚本。无论是移动应用开发还是微服务架构,从小型团队到大型企业,Gradle 都在致力于提升开发者的生产效率。

Gradle 的核心特性包括:

  • 高度可定制:采用可定制、可扩展的模型,灵活性极高。
  • 构建速度快:通过复用之前执行的输出、仅处理已变更的输入以及并行执行任务来显著加速构建过程。
  • 功能强大:不仅是 Android 的官方构建工具,还支持多种主流语言和技术栈。

Gradle使用体验

接下来,我将把原有的 Maven 项目 mall-tiny 改造为使用 Gradle 构建,亲身感受一下 Gradle 的工作流程。

创建Gradle项目

  • 首先需要下载 Gradle 的安装包,建议下载包含源码的完整版本(否则在 IDE 中查看 Gradle 属性时可能看不到注释)。下载地址是:https://gradle.org/releases/

Gradle 6.8.3 版本下载页面

  • 下载完成后解压。随后,在 IDEA 中创建一个新的 Spring Boot 项目。

IDEA 新建项目选择 Spring Initializr

  • 在项目类型中,选择创建一个 Gradle 项目。

项目元数据配置,Type 选择 Gradle Project

  • 接下来,选择使用我们刚才下载并解压的本地 Gradle 发行版,并指定其所在目录。

IDEA 中配置使用本地 Gradle 发行版

  • 项目创建完成后,你会看到一个简单的 Gradle 项目目录结构。其中,build.gradlesettings.gradle 是两个需要重点关注的文件。

新建的 Gradle 项目结构及 build.gradle 文件内容

Gradle插件介绍

在新创建的 build.gradle 文件中,我们可以看到预先配置了三个插件:

plugins {
    id 'org.springframework.boot' version '2.3.9.RELEASE'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

org.springframework.boot

这是 Spring Boot 官方提供的 Gradle 插件,方便我们集成和使用 Spring Boot。通过修改 version 可以控制所使用的 Spring Boot 版本。

io.spring.dependency-management

这是一个提供依赖版本管理功能的 Gradle 插件,其作用类似于 Maven 的 dependencyManagement

例如,之前用 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'
    }
  • 有时从默认仓库下载依赖速度较慢,我们可以将仓库地址修改为阿里云的 Maven 镜像来加速下载:
    repositories {
    maven { url 'https://maven.aliyun.com/repository/public' }
    mavenCentral()
    }
  • 以下是一个完整的 build.gradle 文件示例,已经包含了 mall-tiny 项目所需的所有依赖:
    
    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') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
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()
}


*   最后一步,将原项目的源代码文件复制到新项目的 `src` 目录下即可。至此,Gradle 改造工作就完成了。

![Gradle 项目完整的源代码目录结构](https://static1.yunpan.plus/attachment/e4f3cff9a3a114d8.webp)

## 对比Maven

> Gradle 一直以构建速度快著称,官方也如此宣传。那么,我们将项目清理后重新构建,实测一下它的速度到底有多快。

*   首先,使用原来的 [Maven](https://yunpan.plus/f/28-1) 项目,直接执行 `clean` 后再执行 `package` 命令进行打包构建。

![Maven 生命周期中的 clean 和 package 目标](https://static1.yunpan.plus/attachment/616575528f6c085a.webp)

*   控制台输出如下,总耗时约为 **32 秒**。

![Maven 构建成功日志,总耗时 32.138 秒](https://static1.yunpan.plus/attachment/46455bf593203aa5.webp)

*   然后,使用改造后的 Gradle 项目,同样先执行 `clean` 任务,再执行 `bootJar` 任务(相当于 Maven 的 `package`)进行打包构建。

![Gradle 任务列表中的 bootJar 和 clean 任务](https://static1.yunpan.plus/attachment/6fa28abecb5edbe1.webp)

*   控制台输出如下,总耗时仅为 **15 秒**,速度提升了一倍以上!

![Gradle 构建成功日志,总耗时 15 秒](https://static1.yunpan.plus/attachment/32a9c9f4fb6a230b.webp)

*   再附上一张官方的性能对比图,数据显示 Gradle 的构建速度确实比 Maven 快一倍左右,这个结论是相当可靠的。

![Apache Commons Lang 3 项目在 Gradle 5.4 和 Maven 3.6 下的构建时间对比柱状图](https://static1.yunpan.plus/attachment/c9776e46f1e3719a.webp)

## 总结

Gradle 作为 Google 官方推荐的构建工具,其表现确实令人印象深刻。如果你熟悉 Groovy 脚本,将能充分发挥其灵活的优势。此外,Gradle 的语法简洁明了,构建速度相比传统工具也有显著提升,对于追求效率的开发和构建流程来说,是一个值得考虑的选择。欢迎在 [云栈社区](https://yunpan.plus) 分享你在构建工具选型或迁移过程中的经验和见解。

## 参考资料

Gradle 官方文档:https://docs.gradle.org

## 项目源码地址

https://github.com/macrozheng/mall-tiny/tree/gradle



上一篇:硬件工程师零基础入门指南:从理论到实践构建电子设计知识体系
下一篇:技术架构决策如何落地?架构师必备的项目管理思维与协同技巧
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-1 01:28 , Processed in 0.283932 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表