Upgrade Gradle dependencies and Gradle wrapper version
This skill performs a full Gradle dependency upgrade for the Armeria project step by step.
Armeria is a multi-module project with different minimum Java version requirements. Before upgrading a dependency, always verify that the new version supports the minimum Java version required by the modules that use it.
| Java Version | Modules |
|---|---|
| 8 | core, brave5, brave6, eureka, grpc, grpc-kotlin, graphql-protocol, jetty9, junit4, junit5, kafka, kotlin, logback, logback12, logback13, micrometer-context, oauth2, , , , , , , , , , , , –, , , , , , , , |
prometheus1protobufreactor3resteasyretrofit2rxjava2rxjava3sangriascala*spring:boot2-*dropwizard2thrift0.9thrift0.17tomcat8tomcat9xdszookeeper3samlbucket4jconsulnacos| 11 | athenz, graphql, jetty10, jetty11, kubernetes, logback14, thrift0.18–thrift0.22, tomcat10 |
| 17 | ai:mcp, jetty12, resilience4j2, spring:boot3-*, spring:spring6, spring:boot4-*, spring:spring7 |
When in doubt, check settings.gradle for the java, java11, or java17 flag on each subproject.
./gradlew dependencyUpdates
The report is saved to build/dependencyUpdates/report.txt.
Read build/dependencyUpdates/report.txt to identify all outdated dependencies.
For each dependency, note the current version and the available latest version.
If a version looks ambiguous (unexpected format, major version bump, unusual naming), verify on Maven Central before proceeding: https://central.sonatype.com/artifact/{groupId}/{artifactId}
Before upgrading any dependency, check dependencies.toml for a comment directly above
its version entry. Many pinned versions have an explicit reason, for example:
# Don't upgrade Caffeine to 3.x that requires Java 11.
caffeine = "2.9.3"
# Upgrade once https://github.com/ronmamo/reflections/issues/279 is fixed.
reflections = "0.9.11"
# Ensure that we use the same ZooKeeper version as what Curator depends on.
zookeeper = "3.9.3"
If such a comment exists and the reason still applies, skip the upgrade and do not remove the comment.
If no comment exists, proceed with the Java version compatibility check:
dependencies.toml# X.Y requires Java 11)Edit the [versions] section in dependencies.toml to update the version strings.
The file is located at the root of the repository: dependencies.toml.
After editing dependencies.toml, re-read the full diff (git diff dependencies.toml) and
cross-check every changed entry against the dependencyUpdates report:
Check the latest stable Gradle release at https://gradle.org/releases/ and update
gradle/wrapper/gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-X.Y.Z-all.zip
Run the full build including tests to catch both compilation errors and runtime regressions:
./gradlew build --no-daemon
If there are compilation errors, API breaking changes, or test failures caused by the upgrade, fix them before proceeding.
Create a commit with the exact message format below. Follow it strictly — do not add extra sections, reorder bullets, or change the structure:
Update dependencies
- {library-name} {old-version} -> {new-version}
- {library-name} {old-version} -> {new-version}
- Build
- {library-name} {old-version} -> {new-version}
- {library-name} {old-version} -> {new-version}
Rules:
- {name} {old} -> {new}- Build bullet groups build-only dependencies (testImplementation, annotationProcessor,
relocated libs, non-transitive deps); nest them as sub-bullets with 3-space indentgRPC-Java, Jackson, Netty, Kotlin,
Reactor, Logback, Micrometer); otherwise use the key name as-is from dependencies.toml- Build section entirely- Unupdated section with the
reason. This helps reviewers know which upgrades were intentionally skipped.Example:
Update dependencies
- gRPC-Java 1.63.0 -> 1.64.0
- Jackson 2.17.0 -> 2.18.0
- Build
- checkstyle 10.14.0 -> 10.17.0
- ErrorProne 2.27.0 -> 2.28.0
- Unupdated
- Caffeine 2.9.3 -> 3.2.0 (requires Java 11)
- ZooKeeper 3.9.3 (pinned to Curator's version)