Gradle: Modern Build Tooling
Introduction
Gradle is another major Java build tool—common in Android and many microservice repos. Like Maven, it compiles code, runs tests, and resolves dependencies. This chapter shows a minimal build.gradle with Java 21 settings.
Prerequisites
- JDK 21
- Maven concepts (dependencies, test scope) help
Install Gradle
Use Gradle Wrapper in real projects (./gradlew). For learning, install Gradle globally or let IntelliJ create wrapper.
gradle -version1) Project Layout (Same Idea as Maven)
my-app/
build.gradle
settings.gradle
src/main/java/
src/test/java/2) Minimal build.gradle (Groovy DSL)
plugins {
id 'java'
}
group = 'com.hellocode'
version = '1.0.0-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'com.google.code.gson:gson:2.11.0'
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2'
}
tasks.named('test') {
useJUnitPlatform()
}toolchain requests JDK 21 even if another JDK is default—aligns with Java 21 Features.
Alternative: sourceCompatibility style
Older style (still seen):
java {
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}Prefer toolchains for clearer JDK selection.
3) Common Tasks
gradle build # compile + test + assemble
gradle test # run tests
gradle clean buildWith wrapper:
./gradlew build4) Kotlin DSL (Awareness)
Many projects use build.gradle.kts:
plugins {
java
}Same concepts—different syntax.
Maven vs Gradle Quick Compare
| Maven | Gradle | |
|---|---|---|
| Config | pom.xml | build.gradle |
| Style | declarative XML | programmatic DSL |
| Android | supported | default choice |
| Learning curve | gentle structure | flexible, steeper |
Common Beginner Mistakes
Gradle JVM ≠ Project Java Version
Toolchain fixes compile level; ensure IDE imports Gradle project correctly.
Editing Build Without Sync
Click Reload in IntelliJ after dependency changes.
Committing without Wrapper
Teams commit gradlew + gradle/wrapper for reproducible builds.
What’s Next
Book Recommendations when you finish technical chapters.
FAQ
Should I learn Maven or Gradle first?
Either is fine—this tutorial showed Maven first because XML POMs are easy to read for beginners.
Can I use Gson like Maven example?
Yes—same implementation coordinate in dependencies.
Where are dependencies cached?
~/.gradle/caches (similar role to ~/.m2).
IntelliJ support?
Open Gradle project; IDE syncs classpath.
Link to multithreading / virtual threads?
No build tool change needed—only JDK 21+ on toolchain.