MavenGcsRepoErrorsIntegrationTest.groovy

Finalize the value of any task `@Input` property whose getter returns a property instance, at the start of execution of the task. This means that the property value will not change once the task has started execution, so that the same value is always used during fingerprinting, cache key calculation, validation, when queried by a task action, and so on.

This behaviour only applies to `@Input` properties in this commit. This was just a place to start. Other properties will be added in later commits.

Changes to the property are ignored once the value is finalized implicitly in this way and generate a deprecation warning instead of failing, as would happen after `finalizeValue()` is called. This allows a migration path for task types that can add a new property to represent some input and keep their existing lenient (but now deprecated) behaviour for an existing property backed by the new property. It might prove better to flip this around, let's see.

Improve error reporting in case no matching dynamic version is found This commit improves rendering of errors in case resolution fails because all versions in a dynamic range are evicted, and that at least one of the evicted versions was evicted because of attribute matching. The error will now report the attributes on each tested version, as well as the requested attributes.

For this, the module not found exception has been updated to carry more context, and now makes use of the tree formatter for consistency with other exceptions in the codebase.