Changing buildSrc script renders all tasks within out of date


(Steve Cohen) #1

What does this mean?

Executing task ':openssl64:untarDist' (up-to-date check took 0.264 secs) due to:
  Task ':openssl64:untarDist' additional action class path has changed.

This task has an explicit upToDateWhen on its outputs which returns true, but the task still gets executed due to
"additional action class path has changed."

I am not sure what this means. Can someone explain what it’s trying to tell me? It seems to mean from my experience that if you change something in buildSrc (I have a plugin defined there), every task defined in that plugin is out of date.

I find this very annoying because one of the tasks is a real long runner. Is there any way around it? I’d rather that my upToDateWhen closures on the tasks AND ONLY THEY determine when something has to be executed.


(Stefan Wolf) #2

Hi Steve,

since Gradle 3.0 we also track the implementation of a task and its classpath for up to date checks: https://docs.gradle.org/3.0/release-notes#incremental-build-improvements

This would explain why your task is not up to date and gets re-executed.

Cheers,
Stefan


Workaround for any change to buildSrc making all tasks become out of date
(Steve Cohen) #3

This is not an unambiguously good feature in all use cases! There ought to be some way to turn it off. For example in my use case, developing a build and needing to make many small changes along the way, where one task is a long-running task that does not need to be re-executed because of those changes, which have nothing to do with the task.