Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Remove projectsEvaluated hook from PhasedActions

And modify projectsLoaded hook to be run after configuration, making

sure that requested models are available.

For now, projects are configurated completely before running the

projectsLoaded action, however we can try to avoid unnecessary

configuration in the future without modifying public APIs.

Signed-off-by: Lucas Smaira <>

  1. … 17 more files in changeset.
Make phased actions run tasks only when defined

With this commit, in order to specify if a PhasedAction should run tasks

or just configure the build, the API forTasks is used: when tasks are

defined (or an empty collection is given), Gradle will run tasks,

otherwise only configure the build.

Signed-off-by: Lucas Smaira <>

  1. … 7 more files in changeset.
Use umodifiable list in DefaultClassPath

This makes accidental mutation impossible and reduces some

of the repeated wrapping.

  1. … 34 more files in changeset.
Change target version from 4.7 to 4.8

Changing all uses of 4.7 in documentation and code.

Signed-off-by: Lucas Smaira <>

  1. … 32 more files in changeset.
Code and documentation ajustments to PR

This commit:

- Renames methods in PhasedBuildActionExecuter and corresponding uses

- Improves public java docs making them more precise

- Replaces mocks by stubs in unit tests when possible

- Makes action's handlers in phased actions not receiving failures (they

are send to build results)

Signed-off-by: Lucas Smaira <>

  1. … 34 more files in changeset.
Introduce support for running phased actions

This commit introduces the ability of running multiple build actions in

different phases of the build. These actions are passed by the client

through the tooling api.

With this commit, a single action can be added to each one of the

supporting phases (after projects are loaded, after projects are

evaluated and after tasks are run).

This feature allows improvements like running actions that call a model

builder modifying the graph tasks, and then it is possible to first

fetch a model and then execute tasks, in this order. e.g. Android Studio

sync + source generation.

Signed-off-by: Lucas Smaira <>

  1. … 48 more files in changeset.
Remove unused imports

Remove `ScriptingLanguage` SPI

`ScriptingLanguage` becomes a simple data class with hard-coded values in Gradle core.


* much simpler code

* more correct behaviour: Kotlin scripts are found even when the JVM runtime wouldn't allow the provider to be loaded

* better runtime behaviour (possibly incompatible classes are not loaded until a Kotlin script is actually needed)


* hard-coded class name in Gradle core

* no longer extensible

* file extension is under Gradle core control, not `kotlin-dsl`

  1. … 16 more files in changeset.
Improve error messages for ToolingParameterProxy

ToolingParameterProxy#isValid is replaced by #validateParameter which instead

of returning a boolean indicating if the given Class<?> is a valid parameter

type, it throws an error with a precise description message if not valid.

  1. … 2 more files in changeset.
Fix test expectation

Improve error messages in BuildControllerAdapter

  1. … 5 more files in changeset.
Simplify handling of versions not supporting parameters

  1. … 4 more files in changeset.
Pull ScriptFileResolver up in favor of BuildLayoutFactory

  1. … 9 more files in changeset.
Change version of parameterized models to 4.4

This commit modifies all the java docs and concerned files in previous

commits in this pull request.

  1. … 30 more files in changeset.
Parameter connection related code simplification

Renamings and code simplifications suggested in the pull request.

No functionality changed.

  1. … 13 more files in changeset.
Change version of parameterized models to 4.3

This commit modifies all the java docs and concerned files in previous


  1. … 30 more files in changeset.
Code clean up for parameterized models

Refactorings and code clean up folloiwing commit "Introduce creation of

parameterized tooling models"

  1. … 21 more files in changeset.
Deprecate support for old TAPI providers (#2913)

Deprecation TAPI provider older than 2.6

This change deprecates running Gradle older than 2.6 via Tooling API

  1. … 11 more files in changeset.
Strive to keep Gradle's monotonic clock in sync with the system clock

  1. … 71 more files in changeset.
Simplify time handling internally and for build scans (#2857)

* Don't make TimeProvider Serializable.

This isn't safe and generally doesn't make sense.

* Extract and promote the concept of a build timer.

This was previously not well defined and being overlaid with the concept of when a user/tool requested something, which is not always the same thing.

* Pare down the deprecated org.gradle.util.Clock down to the minimum required.

Internal usage is replaced by a `getStartTime()` directly on BuildRequestContext.

What is left is only kept for backwards compatibility with scans.

* Rename TimeProvider to Clock.

* Move BuildExecutionTimer out of baseServices into core, and into a better package.

* Remove unused.

* Simplify the time package by merging types.

* Prevent the client's build started timestamp from being later than when the provider received the build request.

* Provide a dedicated mechanism for conveying the build start time to build scans.

* Consolidate the ways of formatting durations.

  1. … 179 more files in changeset.
Introduce creation of parameterized tooling models

This commit introduces the possibility of passing parameters through the

Tooling API to the model builders in order to create models based on

information received by the client.

This feature allows plugins to register a model builder for a given

model and parameter and then build models based on the received

parameter. It is preferable to passing gradle properties for two

reasons: first convenience and second because parameters can be created

inside the BuildAction.

A new interface ToolingParameterizedModelBuilder was created and should

be extended by parameterized builders. New methods were added to the

BuildController in order to build models with parameters. In order to

keep cross version compatibility, new protocol interfaces were created.

  1. … 35 more files in changeset.
Use a common `ReliableTimeProvider` for test execution

- For external process, WorkerServices registry has a reliable TimeProvider

- For client side, use TimeProvider build process

  1. … 5 more files in changeset.
Use a common `ReliableTimeProvider` for tooling API `ConnectorServices`

  1. … 5 more files in changeset.
Revert "Change to getClass() from instanceof (#2117)"

This reverts commit 5df3e0126992270844f189793407bb016c18271c.

There was a major performance regression with this commit.

  1. … 2 more files in changeset.
Change to getClass() from instanceof (#2117)

* Change to getClass() from instanceof

This prevents our breaking the symmetrical property of euqals through


EqualsVerifier also noticed some minor problems with some of the

equals() implementations especially around their handling of null values.

I fixed the implementations to deal more gracefully with nulls, but

without changing the core concepts of what equals() meant for each


  1. … 2 more files in changeset.
Favour `ClassPath.EMPTY` over `new DefaultClassPath()`

As it is more intent revealing, shorter and avoids an allocation.

  1. … 11 more files in changeset.
Settings script detection takes scripting language providers into account

  1. … 18 more files in changeset.
Renamed class.

  1. … 3 more files in changeset.
Ensure the correct TAPI progress events are generated when distribution download is cancelled. Moved responsibility for coordinating download and cancellation so that it happens inside the generation of start and finish events, rather than around it.

  1. … 5 more files in changeset.
Generate start and finish events for Gradle distribution download done by the TAPI.

Also moved responsibility for creating the downloader down closer to where the download happens, and inject only the listeners that are interested in the events.

  1. … 12 more files in changeset.