Skip to content

Introduce APIs to represent a resolved dependency graph in a lazy manner #12871

Description

@eskatos

FileCollection is lazy and allows to reason about a flat set of files, possibly coming from dependency resolution.

ArtifactCollection is lazy and allows to reason about a flat set of artifacts, coming from dependency resolution.

But there's no types that are lazy and allows to reason about the dependency graph.

For instance ResolutionResult contains the information about the result of dependency resolution, ResolvedComponentResult represents a component instance in the resolved dependency graph, but they aren't lazy.

This issue is about introducing APIs that allow reasoning about the dependency graph in a lazy manner. This would allow to capture dependency graphs in a lazy way for usage in task inputs, worker action parameters or build service parameters.

It could be new types, or Provider<?> alike.

Context

With configuration caching tasks can only hold lazy types. In other words tasks that need to reason about the dependency graph are not supported without such APIs.

Tasks such as :dependencyInsight or GenerateGraphTask in ResolveTestFixtures are examples of tasks that currently can't be implemented supporting instant execution.

Metadata

Metadata

Assignees

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions