Why Switch from Maven to Gradle? A Hands‑On Migration Guide
This article walks through converting a Maven‑based Java Spring Boot project (mall‑tiny) to Gradle, explains Gradle's key features and plugins, provides step‑by‑step setup with screenshots, shows the full build.gradle file, and compares build times to demonstrate Gradle's speed advantage.
Introduction
This guide demonstrates how to migrate the mall‑tiny Spring Boot scaffold from Maven to Gradle and compares build performance.
What is Gradle?
Gradle is an open‑source, high‑performance build automation tool that can be scripted with Groovy or Kotlin DSL. It supports parallel task execution, incremental builds, and a rich plugin ecosystem.
Highly customizable and extensible.
Fast incremental builds with parallel execution.
Official Android build system and broad language support.
Creating a Gradle Project
Download the full Gradle distribution (source‑included) from https://gradle.org/releases/.
Unzip the package.
In IntelliJ IDEA, create a new Spring Boot project and select “Gradle” as the build system.
Point the IDE to the unzipped Gradle directory.
The generated project contains build.gradle and settings.gradle.
Gradle Plugins Used
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 – Provides Spring Boot support and lets you set the Boot version via the version property.
io.spring.dependency-management – Enables Maven‑like dependency version management, allowing you to omit versions in implementation statements.
java – Adds Java compilation, testing, and other standard tasks.
Maven‑to‑Gradle Dependency Migration
Replace each <dependency> entry in pom.xml with a Gradle implementation line. Example for the Hutool library:
dependencies {
implementation 'cn.hutool:hutool-all:4.5.7'
}If dependency download is slow, configure a faster mirror:
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
mavenCentral()
}Complete build.gradle Example
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()
}Build Time Comparison
Using the original Maven project, mvn clean package took about 32 seconds . After converting to Gradle, ./gradlew clean bootJar completed in roughly 15 seconds , more than twice as fast.
Conclusion
Gradle provides a flexible, concise DSL and superior build performance for Java projects. When comfortable with Groovy (or Kotlin) scripts, developers can leverage Gradle’s extensibility and speed advantages over Maven.
References
Gradle official documentation: https://docs.gradle.org
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Java Tech Enthusiast
Sharing computer programming language knowledge, focusing on Java fundamentals, data structures, related tools, Spring Cloud, IntelliJ IDEA... Book giveaways, red‑packet rewards and other perks await!
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
