Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Move utility into `publish` module

  1. … 4 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.
Moved service that takes care of mapping a project dependency to a GAV to the 'dependency-management' project, where it can be reused outside of the Maven and Ivu publishing plugins.

  1. … 12 more files in changeset.
Changed the mapping from project dependency to a GAV so that it does not use any types from the new publishing plugins, and is so decoupled from these plugins.

  1. … 9 more files in changeset.
Changed registration of internal publications to remove a wrapper object and use `Publication` object directly in the registry.

  1. … 8 more files in changeset.
Changed mapping from project dependency to GAV used by the publishing plugins to use the same service to locate the publications of the target project as is used by the tooling API. This change reduces some duplication and changes the mapping logic so that it is decoupled from the exact mechanism that determines the publications produced by the target project.

  1. … 5 more files in changeset.
Serialize dependency reasons

This commit adds support for serializing dependency (constraint) reasons to disk, both through component

metadata binary serialization and in module metadata.

Signed-off-by: Cedric Champeau <>

  1. … 17 more files in changeset.
Fixed name of constants.

Changed Gradle metadata generation to handle enum attributes.

  1. … 1 more file in changeset.
Handle empty constraint version properly in module metadata

When publishing a dependency to module metadata, we now omit any version

attributes that are unspecified in the dependency.

- For an empty VersionContraint, 'version' is omitted.

- For empty VersionConstraint.preferredVersion, 'prefer' is omitted.

- For empty VersionConstraint.rejectVersions, 'reject' is omitted.

  1. … 5 more files in changeset.
Publish dependency constraints to Gradle module metadata

  1. … 12 more files in changeset.
Support publishing excludes to module metadata in Maven repositories

  1. … 3 more files in changeset.