Paul Krill
Editor at Large

Gradle 7.0 improves incremental builds, backs Java 16

news
Apr 13, 20212 mins

New release of the build automation tool also improves support for Apple Silicon systems.

interconnecting gears / process / automation / machinery / mechanism / efficiency
Credit: 4X-image / Getty Images

Gradle 7.0, the latest release of the popular software build tool leveraged in Android development and elsewhere, offers faster incremental builds as well as support for Java 16.

With the Gradle 7.0 release, introduced April 9, file system watching is enabled by default, to make incremental builds quicker. The capability was introduced as an opt-in feature in Gradle 6.5 and deemed production-ready in Gradle 6.7.

When file system watching is enabled, Gradle maintains what it has learned about the file system in memory between builds and skips reading from the file system on each build. With an incremental build, input and output files are checked to find out what needs to be rebuilt. This capability usually saves a lot of time but adds some I/O overhead, which can be noticeable in large projects when not much has changed since the prior build.

To upgrade to Gradle 7.0, developers can update their wrapper:

./gradlew wrapper --gradle-version=7.0

Developers can access the Gradle upgrade guide and compatibility notes to learn about breaking changes, deprecations, and other considerations.

Also in Gradle 7.0:

  • For Android, performance has been improved for incremental changes in projects, especially those using the Jetifer tool to migrate libraries.
  • Gradle now supports running on and building with Java 16, or Java Development Kit (JDK) 16, which was released on March 16. To support JDK 16, Gradle has been upgraded to use the Groovy 3 language in Groovy DSL build scripts.
  • Native support is offered for Apple Silicon systems, with every feature now supported using a native Arm JDK. Previous Gradle versions could run on Apple Silicon Macs but there were disadvantages, such as some Arm JDK features had to be disabled while an Intel JDK would run at about half speed through the Rosetta2 compatibility layer.
  • Version catalogs are introduced as an experimental capability, enabling build authors to centralize dependency coordinates (group, artifact, versions) of their third-party dependencies in a conventional configuration file and declare dependencies in a type-safe way.
  • An experimental feature for project assessors provides type safety and enables code completion in IDEs.
  • Build reliability improvements have been made, such as now executing a task without the benefit of parallel execution if a task is failing input/output validation.
  • Dependency locking, a mechanism to ensure reproducible builds when using dynamic dependency versions, has been improved. The release defaults to the improved dependency locking file format that results in fewer lock files in most projects.
Paul Krill

Paul Krill is editor at large at InfoWorld. Paul has been covering computer technology as a news and feature reporter for more than 35 years, including 30 years at InfoWorld. He has specialized in coverage of software development tools and technologies since the 1990s, and he continues to lead InfoWorld’s news coverage of software development platforms including Java and .NET and programming languages including JavaScript, TypeScript, PHP, Python, Ruby, Rust, and Go. Long trusted as a reporter who prioritizes accuracy, integrity, and the best interests of readers, Paul is sought out by technology companies and industry organizations who want to reach InfoWorld’s audience of software developers and other information technology professionals. Paul has won a “Best Technology News Coverage” award from IDG.

More from this author