java-25
SKILL.md
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
- When to Use
- Prerequisites
- Target Versions
- DO NOT Upgrade
- Workflow
- Version Catalog Updates
- Java Toolchain Configuration
- Critical: Do NOT Use groovy-all
- Override Spring Boot's Groovy Version
- References
- Related Skills
Available Resources
📚 references/ - Detailed documentation
Prerequisites
- Spring Boot 3.5.x - Upgrade to Spring Boot 3.5.x first
- sdkman - For managing Java versions
- Java 25 Temurin - Install via:
sdk install java 25.0.1-tem
Target Versions
| Component | Version | Notes |
|---|---|---|
| Java | 25 | Target JDK |
| Gradle | 9.2.1 | Major version required |
| Groovy | 5.0.3 | Java 25 requires Groovy 5.x |
| Spock | 2.4-groovy-5.0 | Must match Groovy version |
| Lombok | 1.18.42 | Java 25 bytecode support |
| Lombok Plugin | 9.2.0 | Freefair plugin for Gradle 9.2.1 |
| Spotless | 8.1.0 | Gradle 9 compatible |
| SonarQube Plugin | 7.2.2.6593 | Gradle 9 compatible |
| ByteBuddy | 1.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
| Reference | Content |
|---|---|
| references/preparation.md | Detailed preparation steps and prerequisites |
Related Skills
spring-boot-3-5- Must upgrade firstgradle-9- Gradle 9 upgrade patterns
Weekly Installs
7
Repository
bitsoex/bitso-javaGitHub Stars
36
First Seen
Jan 24, 2026
Installed on
claude-code5
opencode4
antigravity4
windsurf4
codex4
gemini-cli4