Recently, I’ve been debugging some code where there was an attempt to set an another Provider
to Property
which were in the meantime implicitly set as final after tasks started to be executed. I understand the new lazy configuration has its own advantages, but regarding to the documentation (of 6.0.1):
Calling this method makes a property instance unmodifiable from that point on and any further attempts to change the value of the property will fail. Gradle automatically makes the properties of a task final when the task starts execution.
I wonder, if there is a way to detect those places (e.g. by settings some switching in Gradle) by logging them or just failing the execution (looking at the code rather not)? Probably it could have also some performance impact and I’m not sure how many people deal with that problem. Alternatively, maybe it would be good to at least change documentation from will fail
to will silently fail
to make the behavior more clear?