Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Extract serializable `ModuleMetadata` model from `ModuleMetadataJsonWriter`

  1. … 4 more files in changeset.
Split up `GradleModuleMetadataWriter` into multiple files

Under the new `o.g.a.publish.internal.metadata` package.

  1. … 7 more files in changeset.
Polish `GenerateModuleMetadata`

- Format document

- Extract `publication()` accessor

- Reorder `generateTo` parameters to improve prose

- Compose methods with `forEachArtifactOf(...)` utility

- Add required `@Nonnull` annotations

  1. … 2 more files in changeset.
Give ability to opt-out of the build id in GMM

Gradle Module Metadata by default contains a unique build identifier,

making the production of the file not reproducible.

With this commit, it is now possible to opt-out of the inclusion of this

build identifier in the produced metadata file.

Issue #11717

  1. … 12 more files in changeset.
Revert "Configuration of build identifier"

This reverts commits ecb234a255f,

46d52bf8e7e10, 97e9694e12f.

  1. … 11 more files in changeset.
Make publication build identifier configurable

This allows to set a user defined value or a constant in case that

information is not needed and having a stable .module output is


Issue #11717

  1. … 7 more files in changeset.
Force AbstractTestDirectoryProvider to use Class (#12431)


This PR adds `className` to `AbstractTestDirectoryProvider` so there'll be no more `unknown-test-class`.

  1. … 407 more files in changeset.
Catch up with master

  1. … 415 more files in changeset.
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