Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Make AbstractArchiveTask.destinationDir mandatory

Prior to this commit the working directory was used when the

`destinationDir` was not set. Since this behavior does not play nice

with reproducible builds, it will now fail instead. However, it should

rarely happen because the `base` plugin provides a convention.

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

  1. … 63 more files in changeset.
Warn with Ivy publish and incompatible features

Features like constraints, platforms or declared capabilities are not

supported in the ivy.xml file format.

Issue #3667

  1. … 2 more files in changeset.
Rework task dependency inference so that `Provider` implementations use the same `TaskDependencyContainer` interface that most other things use to declare their producer task to the task resolution infrastructure, rather than having special knowledge sprinkled around various places.

Cleaned up a bunch of `Provider` and `Property` implementations so that more logic is reused rather than reimplemented.

  1. … 29 more files in changeset.
Support propagation of the producer task for provider instances that are created using ``.

Now, when a provider represents a task or task output, whether mapped or not, that task is taken as the producer of the value and the mapping function is not called. Otherwise, the value of the provider is unpacked and resolved, as it previously was.

Rework the protocol by which providers communicate their build dependencies to consumers.

  1. … 33 more files in changeset.
Replace internal `SourceDirectorySetFactory` with a method on public `ObjectFactory` service, to allow plugins to create instances of this type without resorting to using internal types.

  1. … 44 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.
Use `getVersion()` in preference to `getVersionConstraint().getPreferredVersion()`

  1. … 13 more files in changeset.
Add dedicated DSL to customize Ivy descriptor to ivy-publish plugin

This commit adds a type safe DSL for customizing the generated Ivy

module descriptor of an IvyPublication to the ivy-publish plugin:

descriptor {

license {

name = 'The Apache License, Version 2.0'

url = ''


author {

name = 'Jane Doe'

url = ''


description {

text = 'A concise description of my library'

homepage = ''



Only interfaces are exposed as part of the public API, all of them are

prefixed with `IvyModuleDescriptor`. The exposed properties make use of

the Provider API.

In addition, the new DSL is documented in the User Guide, DSL Reference

and Release Notes.

Resolves #5193.

  1. … 29 more files in changeset.
Dogfood ImmutableFileCollection on production code (#4988)

This reverts commit 13eaebc2b1244511dcbff4c59cd41253e3b69642.

  1. … 88 more files in changeset.
Revert "Dogfood ImmutableFileCollection on production code (#4988)"

This reverts commit 834632674ca29b6fd190857947338b2b54a9bb62.

The commit caused a bug in incremental compilation, causing changes

to go undetected.

  1. … 88 more files in changeset.
Dogfood ImmutableFileCollection on production code (#4988)

Use ImmutableFileCollection in production code

  1. … 88 more files in changeset.
Remove model rules from ivy-publish plugin

  1. … 5 more files in changeset.
Make IvyArtifact lazy

  1. … 11 more files in changeset.
Make Ivy project identity live

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

Issue: #4943

  1. … 34 more files in changeset.
Remove special treatment for Gradle module descriptor from Ivy publishing

Issue: #4943

  1. … 4 more files in changeset.
Fix build

  1. … 15 more files in changeset.
Dogfood ImmutableFileCollection in tests (#4972)

Reduce the number of static factory methods from ImmutableFileCollection

Use layout.fileFor() in a smoke test

  1. … 32 more files in changeset.
Do not add module metadata file to publishable files if deactivated (#4776)

Fixes #4760

  1. … 3 more files in changeset.
Changed the 'swiftpm-export' plugin to reuse the same service to map a project dependency to a Swift PM target, as is used by the other publishing plugins to map a project dependency to a GAV.

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