Many of the task's inputs are currently captured in a Map<String, Object>. When comparing build scans this makes it hard to determine why the task was or was not up-to-date. data is represented as a Value property. When the value differs, all that we're shown is that "Input 'data' is in both builds but values are different". Splitting this input up into several more finely grained inputs will make build scans more useful.

Comment From: philwebb

It looks like getAlwaysInclude is the only MapProperty and it is only ever called with a name and classifier. @wilkinsona Do we have another example where we've done this? I think ideally I'd rather not have two properties, perhaps we can use a record?

Comment From: wilkinsona

It's the data input that's the biggest concern:

https://github.com/spring-projects/spring-boot/blob/45c9fc0ecb7587ad6b7548816754a4dba32f4a5b/buildSrc/src/main/java/org/springframework/boot/build/antora/GenerateAntoraPlaybook.java#L96-L104

Comment From: philwebb

I wonder if we can drop @Input from that one. It seems like it's built up from other properties.

Comment From: wilkinsona

I'd like to expand this to cover a couple of other things that have been tackled elsewhere for other tasks:

  • removing calls to getProject() during task execution (#32980)
  • moving away from calling ProjectDependency#getProject() (#42928)