Skip to content
java-25 logo

java-25

Upgrade Java projects from Java 21 to Java 25 with required dependency updates. Requires Gradle 9.x, Groovy 5.x, and updated plugins for compatibility.

SKILL.md

Full skill instructions

Java 25 Upgrade

Upgrade Java projects to Java 25 with all required dependency updates.

When to Use

  • Project needs to upgrade from Java 21 to Java 25
  • Need features from Java 25 (records, pattern matching improvements, etc.)
  • Planning to stay on latest LTS-adjacent releases
  • When asked to "prepare for Java 25" or "upgrade to Java 25"

Skill Contents

Sections

Available Resources

📚 references/​ - Detailed documentation


Prerequisites

  1. Spring Boot 3.5.x - Upgrade to Spring Boot 3.5.x first
  2. sdkman - For managing Java versions
  3. Java 25 Temurin - Install via: sdk install java 25.0.1-tem

Target Versions

ComponentVersionNotes
Java25Target JDK
Gradle9.2.1Major version required
Groovy5.0.3Java 25 requires Groovy 5.x
Spock2.4-groovy-5.0Must match Groovy version
Lombok1.18.42Java 25 bytecode support
Lombok Plugin9.2.0Freefair plugin for Gradle 9.2.1
Spotless8.1.0Gradle 9 compatible
SonarQube Plugin7.2.2.6593Gradle 9 compatible
ByteBuddy1.17.5+ASM 9.8 for Java 25

⚠️ DO NOT Upgrade

  • protobuf: Keep existing version
  • grpc: Keep existing version
  • Spring Boot: Keep at 3.5.x (already upgraded)

Workflow

Phase 1: Prepare (Local Validation)

# Install and use Java 25
sdk install java 25.0.1-tem
sdk use java 25.0.1-tem

# Upgrade Gradle wrapper
./​gradlew wrapper --gradle-version=9.2.1

# Update version catalog (see below)
# Build and test locally
./​gradlew clean build test

Phase 2: Commit (After Tests Pass)

Only commit the toolchain change after all tests pass locally.

Version Catalog Updates

# gradle/​libs.versions.toml
[versions]
groovy = "5.0.3"
spock = "2.4-groovy-5.0"
lombok = "1.18.42"
bytebuddy = "1.17.5"  # If defined

[plugins]
lombok = "io.freefair.lombok:9.2.0"
spotless = "com.diffplug.spotless:8.1.0"
sonarqube = "org.sonarqube:7.2.2.6593"

Java Toolchain Configuration

// root build.gradle
allprojects {
    plugins.withType(JavaPlugin).configureEach {
        java {
            toolchain {
                languageVersion = JavaLanguageVersion.of(25)
                vendor = JvmVendorSpec.ADOPTIUM
            }
        }
    }
}

⚠️ Critical: Do NOT Use groovy-all

The groovy-all:5.0.3 artifact has broken transitive dependencies:

// ❌ NEVER: groovy-all has broken transitive deps
testImplementation 'org.apache.groovy:groovy-all:5.0.3'

// ✅ CORRECT: Let spock-core bring in Groovy 5.0.3 transitively
testImplementation libs.spock.core
testImplementation libs.spock.spring  // if using Spring

Override Spring Boot's Groovy Version

// root build.gradle
allprojects {
    ext['groovy.version'] = libs.versions.groovy.get()
}

References

ReferenceContent
references/​preparation.mdDetailed preparation steps and prerequisites

Related Skills

  • spring-boot-3-5 - Must upgrade first
  • gradle-9 - Gradle 9 upgrade patterns
<!-- AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY --> <!-- Source: bitsoex/​ai-code-instructions → java/​skills/​java-25/​SKILL.md --> <!-- To modify, edit the source file and run the distribution workflow -->