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.
FileCollectionis lazy and allows to reason about a flat set of files, possibly coming from dependency resolution.ArtifactCollectionis 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
ResolutionResultcontains the information about the result of dependency resolution,ResolvedComponentResultrepresents 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
:dependencyInsightorGenerateGraphTaskinResolveTestFixturesare examples of tasks that currently can't be implemented supporting instant execution.