Circular dependency on self

I’m attempting to convert a rather complex plugin working in 6.5 to 7.3. It’s been a painful slog through the whole thing. I was beginning to make progress, and then things went South again when I started having tasks suddenly having circular dependencies on themselves, as in:

FAILURE: Build failed with an exception.

  • What went wrong:
    Circular dependency between the following tasks:
    — :beangen:general:settable-binding:compileImpls (*)

(*) - details omitted (listed previously)

No amount of visual inspection has turned up the cause for this. Short of debugging through the gradle code itself to try to figure out what’s going on, I would appreciate some suggestions as to how to track this down. There has to be something quite subtle going on under the covers.

Any ideas? Thanks.

Had a developer do the upgrade at work. I think the build scan report (while not being awesome for this particular case) - may provide more details on what is going on (can’t remember whether it was necessary to search for “red text” in the raw html to find the culprits or how it was done, but it was a key element for resolving the upgrade issues).

I may not remember this correctly, but each actual module needs a unique name (when disregarding the path) - So if you have two “settable-binding” modules in different “paths” with a dependency between them, it may also manifest itself like this, I think.

Thanks. I finally figured it out. I had a task hierarchy: class C extended class B which extended class A. A had an output property, that was declared as an input property in class C.

It would have been nice if the circular dependency report had shown that the fault lie in the property being both an input and output. I’m sure the task dependency graph had that info or it wouldn’t have been able to report the circularity in the first place.