...
- something like this.getChildren().each(add behavior)
- addRecursiveTarget(target)
Interproject dependencies
I think we don't have to explicitly declare them. If there is such a dependency, it means somewhere in the build script of the project that depends on the other project, it refers to this other project anyway. For example compile.with project("otherProject").classpath.
Conclusions
I was really worried about the multiproject problematic and I'm relieved now that there is a solution were at least I'm happy with. Of course there are many details to hammer out. But I'm confident enough now to start implementing something based on the above ideas.