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)
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.