1.0 Release Notes

Gradle 1.0 is a major step forward in the evolution of Gradle, and build tools in general.

Table Of Contents

New and noteworthy

Here are the new features introduced in Gradle 1.0, including the changes in all of the milestones.

Powerful dependency management

Dependency management is at the heart of every build. In Gradle 1.0 we've moved away from using Ivy for dependency resolution. The dependency resolution engine has been rebuilt from the ground up; it is now faster, more accurate and more flexible.

With full DSL support for Maven and Ivy repository formats, offline builds, the ability to refresh dependencies, and better control over version conflict resolution, we feel that Gradle 1.0 raises the bar for dependency management in build automation. As we continue to innovate in this space, we plan to take the dependency management that works so well for Java and adapt it to other languages and technologies.

Fast, accurate and reliable dependency cache

In Gradle 1.0 we've replaced the ivy artifact cache with our own implementation, targetting performance, consistency and reliability. Our new cache has advanced features that help avoid subtle (and not so subtle) problems permitted by other cache implementations, where a build that runs correctly on one machine fails on another.

Faster builds

A fast build means faster feedback. Gradle 1.0 includes a host of performance improvements.

We've also enhanced the Gradle profile report, which now includes dependency resolution times in an improved layout.

Java code quality plugins

Gradle has always provided great out-of-the-box support for standard Java applications. With Gradle 1.0 we've included a number of new code quality integrations to make it easy for you to include these important tools in your build process.

Supported tools include:

IDE integration

Whether you develop code in Eclipse STS, Intellij IDEA or NetBeans (experimental), there is a native Gradle integration for your IDE. Using native IDE integrations you can import and run Gradle builds directly into your IDE, and keep your IDE settings in sync with your Gradle build definition. While not strictly part of the Gradle distribution, these native integrations continually improve as Gradle provides more features via the Tooling API - the new embeddable API on which these integrations are based.

If you don't require tight native integration, the Gradle IDE plugins help you by generating standard project files for your environment. We've improved these IDE plugins to provide more configuration options, to have better defaults, to run faster and to smoothly configure your IDE for your Gradle project.

Embedding Gradle via the Tooling API

Gradle 1.0 sees the introduction of the Gradle tooling API, a new way to embed Gradle. This API allows you to execute and monitor builds, and to query for details about the build. The Tooling API takes care of downloading the version of Gradle required to execute a particular build, and utilises the Gradle daemon process for lightning fast command execution.

The Gradle Tooling API operates in a version independent manner, meaning that any given version of the Tooling API is able to execute builds using both newer and older Gradle versions. Your Gradle version isn't tied to the version of the Tooling API being used, allowing tools like the native IDE plugins to remain stable while supporting a wide range of Gradle projects.

Gradle Build Daemon

The Gradle build daemon reduces the startup and execution time of builds by running them in a long-lived daemon process. The gradle command becomes a client process that communicates with the daemon process, avoiding various JVM startup costs and giving the JVM an opportunity to optimize hotspots.

Gradle 1.0 brings a host of improvements to the daemon, and we now recommend it for all developer builds.

Enterprise scale

Working at the enterprise scale means more than just a fast build. Gradle 1.0 adds capabilities to help you push build logic and configuration out to developers and across teams in a controlled way.

Gradle enables zero-configuration on the client side. Any necessary configuration, be it JVM args or repository definitions, can be specified per project, team or enterprise and stored in version control. Bundle these definitions into a corporate plugin and distribute with the Gradle wrapper for a powerful way to manage your enterprise build environment. No more complex wiki pages explaining how to configure the build on a new machine. No more wasted time due to false alarms caused by a development machine or CI job incorrectly configured.

Making it easy to administer the enterprise build environment was a core goal of Gradle 1.0. We will continue to innovate in this area in future releases.

C++ support

Gradle 1.0 includes preliminary support for building C++ based projects on both Windows and UNIX like platforms. The cpp-exe and cpp-lib plugins can be used for building native executables and libraries respectively from C++ source code.

More plugins and simpler build scripts

Gradle is committed to making it easier for you to develop software. We continue to add new plugins, conventions and features that make the everyday use of Gradle more convenient. More plugins means more build-by-convention support, reduced configuration and less custom build logic.

Gradle now supports several different types of projects: plugins include support for building:

Gradle 1.0 also includes numerous improvements to the build DSL and new features to make your build simpler and easier to maintain.

Upgrading from an earlier Gradle version

For details of exactly what was changed in which Gradle 1.0 milestone, please see the release notes of each individual release. You can also consult the migration guide for each milestone release to identify issues that may affect you during an upgrade to Gradle 1.0.

Previous Release Notes

Fixed Issues

The list of issues fixed between 1.0-milestone-9 and 1.0 can be found here.