Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Fix ignored tests, take 2

  1. … 2 more files in changeset.
Revert "Fix ignored tests"

  1. … 2 more files in changeset.
Fix ignored tests

  1. … 2 more files in changeset.
Ignore failing tests temporarily

  1. … 1 more file in changeset.
Re-use `TaskDependencyResolveContext` during task graph building (#3807)

All dependency resolution in Gradle should happen via TaskDependencyResolveContext during when building the task graph. Calling `DefaultTaskDependency.getDependencies(task)` should be avoided since it creates a new `TaskDependencyResolveContext` and needs to calculate the dependencies again.

`SkipTaskWithNoActionsExecuter` now re-uses the `TaskExecutionGraph` to determine the dependencies of a task instead of re-evaluating them.

After this commit, the task properties are resolved at three places:

- When building the task graph for walking the input files

- When checking if there a task can be executed in parallel with the currently running tasks based on on the declared outputs, destroyables and task local state

- For using the task properties during task execution

The last two places could still be unified into one, but that seems to be a little bit more complicated.

  1. … 23 more files in changeset.
Rename 'experimental features' to 'feature previews'

The idea behind this is that we have a set of feature previews rather

than one cryptic experimental flag.

A feature preview collects a set of related functionality (e.g.

everything related to gradle metadata) that changes existing behavior

and thus could potentially break existing builds. The preview options

will be removed with the next major release (currently 5.0) and the new

behaviour will then become the default.

Signed-off-by: Jendrik Johannes <>

  1. … 45 more files in changeset.
Adjust tests to use the new experimental feature option

Signed-off-by: Jendrik Johannes <>

  1. … 23 more files in changeset.
Initial implementation of component metadata rules allowing modification of variant attributes

This commit introduces metadata rules that support modification of variant attributes. Variant attributes

are specific to each variant and can be found in module metadata. Those are NOT component level attributes,

which could be used during dependency resolution. This will be added in a subsequent commit.

  1. … 49 more files in changeset.
Create all mutable Ivy module resolve metadata through factory

This will simplify the injection of services through the factory, when we will need the immutable

attributes factory to be pushed to resolve metadata.

  1. … 26 more files in changeset.
Allow an Ivy descriptor to be published with empty dependency version

When no version was specified for a dependency, the `ivy-publish` plugin

would attempt to publish an Ivy file with a missing 'rev' attribute. This

caused XML validation to fail for the generated file.

We now publish a `rev=''` attribute when the dependency version is missing,

allowing these projects to be successfully published using 'ivy-publish'

  1. … 3 more files in changeset.
Make java libraries publishable on Ivy using Gradle metadata

This commit completes Gradle metadata publishing on Ivy repositories. It adds the necessary support, and

converts several tests to the wrapping `javaLibrary` test fixture.

  1. … 27 more files in changeset.
Publish Gradle metadata on Ivy repositories

This commit adds support for publishing Gradle metadata on Ivy repositories. Existing tests haven't been

adapted yet.

  1. … 9 more files in changeset.
Add `status` to Gradle module metadata

This commit adds attributes to top level component in Gradle metadata. Attributes are written to Gradle metadata files,

and when read, some attributes can be mapped to existing, legacy, properties of component metadata. This is the case

for the "status" property, which is now mapped to a component attribute when serializing, and mapped back to the "status"

property when reading.

This commit also introduces a test that makes sure that the status is actually read from the Gradle metadata file, by

totally ignoring the Ivy descriptor.

  1. … 18 more files in changeset.
Remove `FOR_COMPILE` and `FOR_RUNTIME` from Usage

The constants had been replaced internally, except for publication. This commit removes them in favor of

using the more specific `JAVA_API` and `JAVA_RUNTIME` constants (in their string forms, making it possible

later to match by value, avoiding classloading issues).

  1. … 8 more files in changeset.
Merged the file resource implementation for the public `Resource` API into the file resource implementation for `ExternalResource` used by dependency resolution and publishing. This is a small step towards merging and reusing all the various resource implementations.

  1. … 30 more files in changeset.
Moved `FileResourceConnector` from 'dependencyManagement' to 'resources' project.

  1. … 10 more files in changeset.
Added `FileResourceRepository` as a global service for creating various file backed `ExternalResource` implementations. Use this in various places instead of creating these implementations directly.

  1. … 41 more files in changeset.
Replaced `ExternalResourceRepository.getResourceMetaData()` with `ExternalResource.getMetaData()`.

Also changed the file backed implementation of `ExternalResource` to use `FileSystem.stat()` to calculate the file meta-data, rather than using the `File` API.

  1. … 50 more files in changeset.
Detangle ivy module descriptor parser

This commit removes the Ivy module descriptor parser as a service, because it unfortunately introduced

a lot of tangling between projects, making it necessary to introduce `project(':ivy')` as a dependency

to almost all projects.

This commit removes the parser as a service and creates it on demand. It should not have a big impact

on performance since there should be only one instance in global scope, through `IvyResolver`.

  1. … 19 more files in changeset.
Cache module version identifiers

In a similar way to module identifiers, use the module identifier factory to cache the module version identifiers.

It allows faster comparisons as we will hit `a==b` much more often and don't have to go the `equals` route. There

are still places where the factory is not used, but it doesn't seem to have a huge impact on performance.

  1. … 49 more files in changeset.
Use the module identifier factory during ivy parsing

  1. … 23 more files in changeset.
Revert "Revert "Merge branch 'cc-java-library-plugin'""

This reverts commit c6cd884e1a8889fb25d26dfcfdfa79d896835e11.

  1. … 76 more files in changeset.
Revert "Merge branch 'cc-java-library-plugin'"

This reverts commit 0d442a55b445f537efbce65267ce9418fce2e7a8, reversing

changes made to 04647ab69fc8d19186cd2a78124ea74b8a89cc0f.

  1. … 76 more files in changeset.
Find a better home for `Usage`

  1. … 13 more files in changeset.
Add support for publishing libraries using the `maven-publish` plugin

This commit adds support for API dependencies in the generated pom file when using the `maven-publish` plugin.

It refactors the `Usage` class to make it public, and extensible by users. Then the legacy internal `Usage` class,

which was only used by the publishing plugin, has been updated to use `Usage` as a member, instead of being directly

the usage. This allows us to map configurations to usages more precisely.

- The `compile` scope of the generated pom file consists of the `api` dependencies.

- The `runtime` scope of the generated pom file consists of the old `runtime` dependencies *and* `runtimeElements` dependencies

With this setup, the new publishing plugin is now closer to the reality than the old Maven publishing plugin.

  1. … 23 more files in changeset.
Revert De-duplicate commonly used immutable objects in dependency resolution and IDE changes

Commits reverted:

- 807b1e4f8d1585d93c1de3e9ca83d99d0819e2d2

- 9482b0b05374253cafdb776550d7016385912e04

- 4ecead06b53ec6b0f15c517bf0d0c6a74c3b3c05

- db1135a8a5f1c507e0df3c03ad12ddc963799e4d

- 7350bcbae30a777909cec74ebfd5a91d2c89081e

Additionally, minor changes to avoid usage of introduced

classes and methods from subsequent commits.

Issue: gradle/gradle-private#563

  1. … 109 more files in changeset.
De-duplicate (= intern) some instances in dependency resolution

- Reduce memory usage of dependency resolution by de-duplicating the

most commonly used immutable instances.

- Objects aren't strictly immutable: displayName is calculated lazily

- solution is thread-safe without synchronization

- lazy calculation is needed for efficient interning since a lookup

will always create a new instance.

- Use strong references in some instance interners

- strong references cause less GC overhead than weak references

- Strong references:







- Weak references:




- Both reference types:



- The reason for special handing is that DefaultBuildIdentifier

has a state field "current" as part of the instance which

isn't part of equals/hashCode.

+review REVIEW-6277

  1. … 104 more files in changeset.
Remove the use of `Optional` in `ProjectDependency#getTargetConfiguration`

+review REVIEW-6242

  1. … 13 more files in changeset.
Deprecate `ModuleDependency#getConfiguration` in favor of `ModuleDependency#getTargetConfiguration`

We want to be able to differentiate between two cases when dependencies on projects are declared:

1. the user didn't choose any specific configuration

2. the user chose a configuration, and it can be the same as the default one

The previous implementation required that `getConfiguration` returns a non-null value, making it impossible to

make a difference between the following cases:

`compile project(':')`


`compile project(path: ':', configuration: 'default')`

The new `getTargetConfiguration` method returns an `Optional<String>`, which will be `absent` if the user

didn't choose anything specific, and `present` if he did.

This allows us to make an explicit configuration selection take precedence over automatic configuration

selection when attributes are defined.

  1. … 15 more files in changeset.
Restored some ivy.xml validation that went missing and added some more.

  1. … 4 more files in changeset.