Create Your First Gradle Project

Introduction

This chapter creates a real Gradle Java application two ways: gradle init (fast template) and a manual minimal layout (deep understanding). You will learn what each file does, run ./gradlew build, and execute a Hello World with the application plugin.

Prerequisites

Standard Gradle Java Layout

Same src convention as Maven—Gradle adopted it for compatibility.

Pick an empty parent folder:

bash
mkdir ~/projects
cd ~/projects
gradle init

Answer the wizard (typical learning choices):

PromptSuggested answer
Typeapplication
Implementation languageJava
Build script DSLGroovy (Kotlin .kts is fine too)
Test frameworkJUnit Jupiter
Project namehello-gradle
Java version21
Generate Wrapperyes

After init:

bash
cd hello-gradle
./gradlew tasks
./gradlew build
./gradlew run

Windows:

bat
gradlew.bat build
gradlew.bat run

You should see BUILD SUCCESSFUL and application output in the console.

Key Files After init

settings.gradle

gradle
// Root project name shown in IDEA and build output
rootProject.name = 'hello-gradle'

Multi-module projects add include 'submodule' here.

build.gradle (simplified example)

BlockPurpose
pluginsEnables Java compile, test, run tasks
group / versionProject coordinates (like Maven GAV)
java.toolchainCompile with JDK 21
repositoriesWhere to download libraries
dependenciesLibraries and scopes (implementation, testImplementation)
application.mainClassEntry point for gradlew run

gradle/wrapper/gradle-wrapper.properties

Pins Wrapper version:

properties
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip

Commit Wrapper files so teammates need only JDK 21.

gradle.properties (optional)

properties
org.gradle.jvmargs=-Xmx2g -Dfile.encoding=UTF-8
org.gradle.parallel=true

Method B: Manual Minimal Project

Create structure by hand:

bash
mkdir -p manual-gradle/src/main/java/com/example
mkdir -p manual-gradle/src/test/java/com/example
cd manual-gradle

settings.gradle:

gradle
rootProject.name = 'manual-gradle'

build.gradle:

src/main/java/com/example/HelloApp.java:

java
package com.example;
 
public class HelloApp {
    public static void main(String[] args) {
        System.out.println("Hello from Gradle!");
    }
}

Generate Wrapper (needs global gradle once):

bash
gradle wrapper --gradle-version 8.12.1
./gradlew build
./gradlew run

Common Gradle Tasks

TaskWhat it does
cleanDeletes build/
compileJavaCompiles main sources
testRuns JUnit tests
buildcheck + assemble (compile, test, jar)
runRuns application main class
jarPackages compiled classes
bash
./gradlew clean build

Outputs land under build/libs/ (JAR name includes project version).

Import into IntelliJ

  1. Open the folder containing settings.gradle
  2. Wait for Gradle sync
  3. Run HelloApp from the gutter or Gradle → application → run

See IntelliJ and Gradle for JVM and distribution settings.

Compare with Maven Quickstart

StepMavenGradle
Scaffoldmvn archetype:generategradle init
Config filepom.xmlbuild.gradle
Buildmvn package./gradlew build
Runjava -jar or exec plugin./gradlew run

Mini Exercise: Change the Greeting

  1. Edit the main method message
  2. Run ./gradlew run
  3. Add a failing test, run ./gradlew test, fix it, run again

FAQ

build/ folder — commit to git?

No. Add build/ to .gitignore. Commit sources and Wrapper only.

Groovy vs Kotlin DSL?

Same concepts. Groovy build.gradle is common in Java samples; build.gradle.kts uses Kotlin syntax—popular in Kotlin projects.

gradlew: Permission denied on macOS/Linux?

Run chmod +x gradlew.

Init failed to pick Java 21?

Edit java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } } manually.

What comes next?

Gradle Wrapper — deep dive into gradlew and upgrading versions.