Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
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.
Bump FORMAT_VERSION number for Gradle module metadata

  1. … 7 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 `getVersionConstraint` from `Dependency`

We will at some point deprecate `getVersion` on `Dependency`, which is nullable because it doesn't always

make sense (ex: project dependencies). So instead of having version constraints on dependency, it will

only be introduced on the relevant type (external dependencies only).

  1. … 8 more files in changeset.
Read and write `prefers` and `rejects` version constraints in Gradle metadata file

This commit changes the Gradle metadata file format to write version constraints instead of versions.

Instead of writing a single (preferred) version, the `version` block in the Gradle metadata format

for a dependency is now a proper `VersionConstraint`, with `prefers` and `rejects`.

The Gradle dependency metadata format spec has been adjusted.

Note that this commit does not introduce publishing of such metadata (at least, it doesn't prove that

it works): it only adds support for the feature.

  1. … 8 more files in changeset.
Remove maven assumption from module file generator

The ModuleMetadataFileGenerator now asks the backing publication for

the published name and url for each `PublishArtifact`.

  1. … 4 more files in changeset.
Fixed generation of the module metadata file for project dependencies that point to another project that has publications whose coordinates have been customized.

  1. … 4 more files in changeset.
Renamed the module metadata file in a Maven repo from `x-module.json` to `x.module`.

  1. … 9 more files in changeset.
Changed the dependency resolution engine to understand to some degree the connections between the various modules of a component that is published across multiple modules, such as a C++ library or executable.

The publishing plugins no longer insert an artificial dependency between the main module and the other modules. The module metadata parser does this instead when it reads the metadata. This implementation is intentionally dumb and can be improved later without requiring changes to the metadata.

  1. … 7 more files in changeset.
Removed unused import.

Include more details in the module metadata file.

- Added the identity of the component contained in the current module, if any.

- Added connection back to the main module of the component, where the current module is not the main module.

- Added connection to the module that contains each variant, when the variant is not contained in the current module.

- Added size and content information for each file.

  1. … 7 more files in changeset.