We are excited to announce Gradle 9.5.0-20260315004708+0000 (released 2026-03-15).
This release features 1, 2, ... n, and more.
We would like to thank the following community members for their contributions to this release of Gradle: /dev/mataha, Ujwal Suresh Vanjare, Suvrat Acharya
Be sure to check out the public roadmap for insight into what's planned for future releases.
Switch your build to use Gradle 9.5.0-20260315004708+0000 by updating the wrapper in your project:
./gradlew wrapper --gradle-version=9.5.0-20260315004708+0000 && ./gradlew wrapper
See the Gradle 9.x upgrade guide to learn about deprecations, breaking changes, and other considerations when upgrading to Gradle 9.5.0-20260315004708+0000.
For Java, Groovy, Kotlin, and Android compatibility, see the full compatibility notes.
Gradle now generates type-safe Kotlin accessors for precompiled convention Settings plugins (*.settings.gradle.kts). Previously, when writing a convention plugin for settings.gradle.kts, you often had to use string-based APIs to configure extensions or plugins. Now, as long as the kotlin-dsl plugin is applied, Gradle generates accessors that provide IDE autocompletion and compile-time checking for your settings scripts, matching the experience already available for Project-level convention plugins.
To enable these accessors, ensure your convention plugin build includes the kotlin-dsl plugin:
// build-logic/build.gradle.kts
plugins {
`kotlin-dsl`
}
--help outputThe output of gradle --help has been refreshed to be clearer and more consistent. Changes include:
Here is a snapshot of the updated output printed to a terminal with 80 columns:
To see help contextual to the project, use gradle help
To see more detail about a task, run gradle help --task <task>
To see a list of available tasks, run gradle tasks
USAGE: gradle [option...] [task...]
-- Signals the end of built-in options. Parses
subsequent parameters as tasks or task
options only.
Help:
--help, -?, -h Shows this help message.
--show-version, -V Prints version information and continues.
--version, -v Prints version information and exits.
Logging:
--console Specifies which type of console output to
generate. Supported values are 'plain',
'colored', 'auto' (default), 'rich', or
'verbose'.
--console-unicode Specifies which character types are allowed
in the console output. Supported values are
'auto' (default), 'disable', or 'enable'.
--debug, -d Sets log level to debug. Includes the
normal stacktrace.
--full-stacktrace, -S Prints the full (very verbose) stacktrace
for all exceptions.
--info, -i Sets the log level to info.
--quiet, -q Logs errors only.
--stacktrace, -s Prints the stacktrace for all exceptions.
--warn, -w Sets the log level to warn.
Plugin and build authors can now lock domain object collections to prevent further modifications using the new disallowChanges() method.
disallowChanges() is called, elements can no longer be added to or removed from the collection.val myCollection = objects.domainObjectContainer(MyType::class)
val main = MyType("main")
myCollection.add(main)
myCollection.add(MyType("test"))
myCollection.disallowChanges() // the collection is now immutable
main.setFoo("bar") // individual elements can still be modified
myCollection.add(MyType("other")) // this will fail
myCollection.remove(main) // this will fail
Gradle now supports the GRADLE_DAEMON_BIND_ADDRESS environment variable to explicitly specify the network address used for client-daemon and cross-daemon communication.
Previously, Gradle always attempted to auto-detect the local bind address, which could fail in environments with specific network configurations (multiple network interfaces, multiple TCP/IP stacks, etc.).
Setting GRADLE_DAEMON_BIND_ADDRESS to an IP address or hostname will skip auto-detection and use the provided address directly:
GRADLE_DAEMON_BIND_ADDRESS=192.168.1.10 ./gradlew build
Gradle Wrapper scripts and application start scripts include links to the GitHub source templates they were generated from. Previously, these links always pointed to the latest template versions, which could drift out of sync with the actual generated scripts as templates evolved. This has now been fixed: scripts always link to the exact template version they were generated from.
Tooling API clients can now directly access Gradle help and version information the same way as the Gradle CLI. This allows IDEs and other tools to provide a more consistent user experience when interacting with Gradle. For example, In IntelliJ IDEA users will be able to run --help and --version via the Execute Gradle task toolbar action.
Promoted features are features that were incubating in previous versions of Gradle but are now supported and subject to backward compatibility. See the User Manual section on the "Feature Lifecycle" for more information.
The following are the features that have been promoted in this Gradle release.
Known issues are problems that were discovered post-release that are directly related to changes made in this release.
We love getting contributions from the Gradle community. For information on contributing, please see gradle.org/contribute.
If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines. If you're not sure if you're encountering a bug, please use the forum.
We hope you will build happiness with Gradle, and we look forward to your feedback via Twitter or on GitHub.