Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Remove version constrain constructor without 'branch'

Although technically the 'branch' is special as it is not (yet)

published and thus not used/needed in many places, we keep

things consistent to avoid weird issues as the one fixed in the

previous commit.

  1. … 7 more files in changeset.
Introduce a checksum file cache service

This service is responsible for caching the checksums computed from

local file system. Because it's also used for dependency verification

writing and checking, this cache uses the existing infrastructure which

makes sure that if a file is updated locally, we expire the entry in

the cache.

This is done because there are lots of places in the code where we

used the legacy `HashUtil` class, which has no caching whatsoever.

It's, however, quite common to have a build which generates sha1

checksums multiple times for the same file. For example, during


  1. … 102 more files in changeset.
Write capabilities in available-at variants

This is required because variant selection will use the local attributes

and capabilities, adding the real module as a dependency in the current


  1. … 1 more file in changeset.
Gradle module metadata: forbid no version at all

With this change, it becomes illegal to create a Gradle Module Metadata

file that has depedencies or constraints declared without any version at

all across all variants.

  1. … 5 more files in changeset.
Add sha-256 and sha-512 checksums to `maven-publish`

This commit adds the SHA-256 and SHA-512 checksums in:

- Gradle Module Metadata

- uploads to Maven repositories using the `maven-publish` plugin

The upload of those additional files is failsafe, just in case some

repositories don't support those checksum files.

  1. … 33 more files in changeset.
Add validation at publication time

This commit introduces validation when generating Gradle

Module Metadata:

- check that there's at least one variant published

- each variant must have at least one attribute

- there shouldn't be duplicate variant names

- each variant must have a different (attributes,capabilities)


Closes #10736

  1. … 11 more files in changeset.
Preserve strictly when publishing resolved version

* When the initial version declaration uses `strictly`, then the

resolved version will also be defined as `strictly`.

Fixes #10533

  1. … 1 more file in changeset.
Fix skipping of empty versions

* When no version is specified, the entire `version` block is to be

skipped. This was not the case due to a type mismatch.

* However if a resolved version is to be written, then the block should

never be skipped.

  1. … 1 more file in changeset.
Rework `forSubgraph` as implied by `strictly`

This commit removes a dedicated `forSubgraph` flag

on version constraints, so that it is _implied_ by

strict version constraints. This simplifies the behavior

of `strictly`, making it closer to the intuitive semantics,

while maintaining the ability to fail the build if a

consumer brings an incompatible version in the graph.

As a consequence, _strict dependencies_ now express that

the producer preference overrides whatever is found in

its own dependency graph. It is closer to the "nearest

first" semantics of Maven, while not having its drawbacks

(ordering in particular).

  1. … 77 more files in changeset.
Add test coverage for artifact selectors in GMM

  1. … 8 more files in changeset.
Add `forSubgraph()` API to version constraints

  1. … 20 more files in changeset.
Rename writer/parser classes for consistency

  1. … 21 more files in changeset.
Support requested capabilities on external dependencies

This commit adds support for having requested capabilities

part of the module component selector, for external dependencies.

This means that if a component is using Gradle metadata, we can

read requested capabilities and honor them during selection.

This reworks where requested capabilities are stored, and in

particular moves them to the `ComponentSelector`, making them

properly part of the identity of a dependency. As such, two

dependencies requiring two different variants by using distinct

capabilities will now properly appear as two different dependencies

in the dependency graph, instead of two variants of the same


  1. … 63 more files in changeset.
Allow the services required by a given class to be queried prior to creating any instances of that class. Use this to allow `ArtifactTransformDependencies` to be injected into artifact transforms using any of the service injection patterns (that is, via a constructor or a getter).

  1. … 127 more files in changeset.
Remove direct usages of `ThreadGlobalInstantiator` from tests, replace with test fixtures.

  1. … 9 more files in changeset.
Decorate all domain collection container for emitting build ops (#7876)

* Update all domain object container with decorator for tracing executed callback actions

* Add decorator to a ll required occurances of DefaultDomainObjectSet

* Keep ctor for DefaultPolymorphicDomainObjectContainer as its used in gradle-idea-ext plugin

* Bring back DefaultDomainObjectSet constructor used by the android plugin

* keep backwards compatibility

  1. … 122 more files in changeset.
Add support for publishing resolved versions of dependencies

This commit adds support for using the resolved versions of

dependencies when publishing with the `maven-publish` plugin.

There are currently only 2 formats supported:

1. POM files, in which case the declared version is replaced with

the resolved version in the <dependency> block

2. Gradle metadata, in which case we add an additional property

to the `json` file, the `resolved` property. This property is NOT

used when resolving, yet.

  1. … 26 more files in changeset.
Split off value snapshotting and attributes related methods of TestUtil

  1. … 64 more files in changeset.
Avoid publishing redundant constraint information in module metadata

  1. … 9 more files in changeset.
Separate 'prefer' and 'require' in dependency versions

When we introduced the ability to declare a 'preferred' version on

a dependency declaration, this was implemented such that declaring

a "required" dependency version using `org:foo:1.0` was effectively

the same as declaring a "preferred" version `org:foo { prefer '1.0' }`.

In order to differentiate between the behaviour of required and

preferred dependency versions, this commit introduces a separate

model for these constraint types. This model is published to

Gradle `.module` metadata files, and is retained internally

throughout dependency resolution.

At this stage, the behaviour of required and preferred versions

is identical. A later commit will introduce the behavioural


  1. … 36 more files in changeset.
Retain separate versions for 'strictly' and 'prefers'

Previously, a `strictly` version constraint was translated into a separate

'prefer' and 'reject' constraint: this is how it was processed internally,

as well as how it was represented in a `.module` file.

With this change, strict version constraints are logically retained as a

first class version constraint:

- `.module` files can have versions declared with `strictly`

- Strict constraints are only translated to a reject version selector

as part of resolution (not when parsing the constraint)

  1. … 25 more files in changeset.
Fix test expecting empty attributes

Publish configuration-wide excludes in Gradle module metadata

Resolves #5035.

  1. … 3 more files in changeset.
Write dependency attributes in Gradle module metadata

If a dependency has attributes, those are now written in the module descriptor file. Attributes are

written if, and only if, the attribute set is not empty.

  1. … 1 more file in changeset.
Serialize dependency attributes metadata

Now that module metadata may contain dependencies with attributes, we need to serialize them too.

This commit updates the component selector serializer, as well as the module metadata serializer,

to use this information, effectively bumping the cache metadata layout format version.

  1. … 18 more files in changeset.
Delegate artifact creation to Publication

Issue: #4943

  1. … 35 more files in changeset.
Add signatures to publications

Issue: #4943

  1. … 17 more files in changeset.
Add support for signing Maven/Ivy publications including metadata

Issue: #4943

  1. … 15 more files in changeset.
Rename `CapabilitiesDescriptor` to `Capabilities`

... and `getCapababilitiesMetadata()` to `getCapabilities()` for consistency.

  1. … 36 more files in changeset.
Publish capabilities to Ivy/Maven repositories

This commit makes sure that capabilities can be published to Maven or Ivy repositories.

By published, we only mean using Gradle metadata: capabilities are a Gradle-only feature,

so there's no equivalent to be published in a `pom.xml` or `ivy.xml` file.

  1. … 15 more files in changeset.