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.

bash
gradle -version

1) Project Layout (Same Idea as Maven)

text
my-app/
  build.gradle
  settings.gradle
  src/main/java/
  src/test/java/

2) Minimal build.gradle (Groovy DSL)

groovy
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):

groovy
java {
    sourceCompatibility = JavaVersion.VERSION_21
    targetCompatibility = JavaVersion.VERSION_21
}

Prefer toolchains for clearer JDK selection.

3) Common Tasks

bash
gradle build        # compile + test + assemble
gradle test         # run tests
gradle clean build

With wrapper:

bash
./gradlew build

4) Kotlin DSL (Awareness)

Many projects use build.gradle.kts:

kotlin
plugins {
    java
}

Same concepts—different syntax.

Maven vs Gradle Quick Compare

MavenGradle
Configpom.xmlbuild.gradle
Styledeclarative XMLprogrammatic DSL
Androidsupporteddefault choice
Learning curvegentle structureflexible, 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.

No build tool change needed—only JDK 21+ on toolchain.