The 1.0-milestone-3 release brought a new API, called the tooling API, which you can use for embedding Gradle. This API allows you to execute and monitor builds, and to query Gradle about the details of a build. The main audience for this API is IDE, CI server, other UI authors, or integration testing of your Gradle plugins. However, it is open for anyone who needs to embed Gradle in their application.
A fundamental characteristic of the Tooling API is that it operates in a version independent way. This means that you can use the same API to work with different target versions of Gradle. The tooling API is Gradle wrapper aware and, by default, uses the same target Gradle version as that used by the wrapper-powered project.
Some features that the tooling API provides today:
In future we may support other interesting features:
The Tooling API is the official and recommended way to embed Gradle.
This means that the existing APIs, namely GradleLauncher
and the open API (the UIFactory and friends),
are mildly deprecated and will be removed in some future version of Gradle.
If you happen to use one of the above APIs, please consider changing your application to use the tooling API instead.
Since the Tooling API is an interface for a programmer most of the documentation lives in the javadocs/groovydocs.
This is exactly our intention - we don't expect this chapter to grow very much.
Instead we will increase code samples and improve the documentation in the javadocs.
The main entry point to the Tooling API is the
GradleConnector
.
You can navigate from there and find code samples and other instructions.
Pretty effective way of learning how to use the Tooling API is checking out and running
the samples that live in $gradleHome/samples/toolingApi
.
If you're embedding gradle and you're looking for exact set of dependencies the tooling api jar requires
please look at one of the samples at $gradleHome/samples/toolingApi
.
The dependencies are declared in the gradle build scripts.
You can also find the repository declarations where the jars are obtained from.