Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Temporarily disable instrumentation of build logic added via the build script classpath when configuration caching is not enabled.

Other build logic is still instrumented.

  1. … 12 more files in changeset.
Add a plugin that precompiles and wires up groovy scripts as plugins

Implementation is based on original spike

and adjusted for the changed codebase.

  1. … 16 more files in changeset.
Integrate with Gradle Enterprise plugin 3.0 (#11041)

  1. … 52 more files in changeset.
Make paths/names of included builds immutable (#10998)

Changes the “build path” for included builds to be determined at inclusion time based on the directory name, or a user supplied override. Previously, we tried to use the root project name defined in the included build. This caused a lot of complexity due to it not being known until part way through building the included build.

This change also disallows use of `buildSrc` as a project name, as it collides with the `buildSrc` nested build.

  1. … 72 more files in changeset.
Support plugins {} in settings scripts

  1. … 9 more files in changeset.
Support plugins {} in settings scripts

  1. … 9 more files in changeset.
Apply `'if' replaceable with 'switch'` inspection the whole project

    • -36
    • +41
  1. … 8 more files in changeset.
Forbid the use of `apply: false` for plugins in settings scripts

  1. … 13 more files in changeset.
Allow property replacement in version strings in the `plugins` block

Fixes #1697

    • -14
    • +46
  1. … 3 more files in changeset.
Polish `PluginRequestCollector`

- Reuse `id(String, int)`

Execute the `plugins` block in order to extract plugin requests

Previously, we were extracting `PluginRequests` when compiling a build script,

using AST transforms. This prevented any sort of dynamic behaviour within the

plugins block, such as reading plugin versions from a properties file.

This behaviour was by design, and the syntax of the plugins block was explicitly

restricted to ensure the plugin requests were statically defined.

This restricted syntax has been the cause of much user angst, and the expected

benefits of a truly imperative plugins block have not eventuated. Furthermore,

the implementation of `plugins` in the Kotlin DSL does not add the same


With this change, the `plugins` block is actually invoked to extract any plugin

requests. While the restricted syntax remains (for now), this change opens up

the possibility of supporting property replacement for version numbers and other

dynamic behaviour.

One limitation of this change is that the line number of each plugin request

is not captured correctly: the line number is always reportes as 0 for any

request. Several tests are failing due to this limitation.

    • -32
    • +5
  1. … 7 more files in changeset.
Record line numbers for each plugin request

When compiling, transform each `id(String)` method call into

`id(String, int)`, allowing the line number to be captured.

As the syntax of the plugins block is still completely restricted,

there is no risk of another `id` method being incorrectly transformed.

If/when we decide to relax the restrictions on syntax, we'll need to

do something smarter here.

    • -0
    • +4
Validate plugin request values when invoking plugins block

This is a further change toward allowing the plugins block to support

property replacement or other dynamic features. Instead of validating

the plugin id and version values when compiling the script, we now

perform this validation when these values are extracted, during

invocation of the `plugins` block.

    • -0
    • +127
    • -140
    • +0
  1. … 3 more files in changeset.
Add missing @Override to public api types

Signed-off-by: Paul Merlin <>

  1. … 341 more files in changeset.
Fix error reporting for duplicate plugin application

Previously, when we detected a duplicate plugin application, we would

always report the location of the first plugin applied, regardless of which

plugin that was. This led to nonsensical errors about a plugin being applied

at a location that pointed to a completely different plugin.

Now, we report the location of the first application of the plugin that was


  1. … 1 more file in changeset.
Document `PluginRequestApplication#applyPlugins`

Limit PluginRequests instantiations & short-circuit when empty

  1. … 4 more files in changeset.
Replace usages of org.gradle.api.Nullable

With javax.annotation.Nullable.

  1. … 460 more files in changeset.
Remove guava from worker process path

  1. … 15 more files in changeset.
Rename to xxxInternal convention

  1. … 40 more files in changeset.
Polish pluginManagement DSL

    • -32
    • +0
    • -0
    • +1
  1. … 95 more files in changeset.
Fixing tests

  1. … 4 more files in changeset.
Renamed a class, and pulled some methods around on interfaces

Also made the test require that if() { pluginManagement { } } work. The

test doesn't pass, but I should fix that soon.

  1. … 6 more files in changeset.
Reverting changes descope some changes

    • -113
    • +0
  1. … 11 more files in changeset.
Cleaning up some things

- Removing some interfaces / classes that are kruft

- Moving the PluginRequests to be immutable

- Removing some DSL magic

    • -20
    • +21
    • -25
    • +0
  1. … 8 more files in changeset.
Adding javadoc, fixing issues with quickCheck

    • -0
    • +112
    • -0
    • +25
  1. … 22 more files in changeset.
Adding test for pluginManagement {}

Needs to test the rules part, but the first bit is to make sure that

anything you do in pluginRepositories also works.

This has some changes about how data gets around. There's a service

that's been registered that's responsible to make things work (and is

shared). The API makes a new object that delegates to the service. This

allows us to make it early and have everyone use the same ones.

    • -0
    • +50
  1. … 18 more files in changeset.
Moving to new pluginManagement dsl

Deleting classes that aren't used anymore. Writing some tests for

parsing the PluginManagement DSL.

Still needs to validate that the change will work as expected, but this

way I can get early feedback.

  1. … 33 more files in changeset.
Revert "Revert changes for custom plugin portal"

This reverts commit 2288791711e1f2e8edbc5af11c9348d48038f79e.

    • -3
    • +5
  1. … 66 more files in changeset.
Revert changes for custom plugin portal

Revert 634e8884b8c8af88de7b45400d9448dcfb7687cf - add plugin resolution improvements to release notes

Revert 7164418390ebfa366eac77a8064d94ab386b7857 - Make pluginRepositories available in init scripts

reverts commit a1f3919be2d8b18e70c9777ba768b95272a08d1c.

reverts commit e996ec71a78dfd88d43f0e9bf589ca8b29c3160c.

reverts commit 02ae8d7131ed123238eb3a6dd200dfc8e8b360f7.

reverts commit 72f57e195af6e677316252f59965c17e889bb6bf.

reverts commit 9dcc63dad116b55cb860c89e3d749d58c787fbbe.

Revert e0b7a1c9febf72f8ca8a00a9e7f68089b3cda9ce - Tests and bug fixes for custom plugin portal

reverts commit e8805c1616912322e5441016e38329e11af3ca63.

reverts commit 20b815f768dea7f3bca48664233d13174d2e0f60.

Revert 0ae9da185d0df9b5831dce48eca21118d1fac5d7 - Move PluginId to interface

Revert 52c8306d872778404cbbd117bc2214da9f76e0c1 - Public interface changes for custom plugin portal

reverts commit 27ec8f7e535778f4fbb93df09937b027ac1ca488.

Revert 1b3f52920d8bf82be470d1aa972af21af5902f32 for custom plugin portal

Revert 71d6282cecba8ac5becad3f13f29f122212c0ff2 for custom plugin portal

reverts commit 500f9a90ea1775f4b5fe02fa9122750a10e90a5c.

Revert fa2963120a9d84bc156cb7418339ffccc2f88629 for custom plugin portal

Revert 7141b00cd487e265b08aaef364477870ccb38655 for custom plugin portal

    • -5
    • +3
  1. … 67 more files in changeset.