We have an Ant and Ivy construction management system, which basically consists of a common Ant file and a set of conventions around the directory structure.
One hurdle I am trying to overcome is a fairly common case of "recursive publishing." Let's say we have 5 internal code modules that have a dependency graph as follows:

- Each module must publish its ivy artifacts in our internal repo
- Artifacts that have not yet been cleared for deployment for testing should have the status of "integration"
- Artifacts deployed for testing should have a milestone status (manually promoted by the developer).
- Artifacts verified by testers must have the status "release"
Tell the developer that all 5 modules are checked locally and made changes to them. Now he wants to push all of his changes into a milestone status. In other words, what should happen in the ivy repository:
- e-1.0-RC1 is published
- d-1.1-RC2 is published citing e-1.0-RC1 as a dependency
- c-2.0-RC1 is published citing d-1.1-RC2 as a dependency
- b-3.3-RC1 is published citing e-1.0-RC1 as a dependency
- Finally, a-7.1-RC2 is published, citing c-2.0-RC1 and b-3.3-RC1 as dependencies.
I did not find an easy way to do this using ivy + Ant (Ivy promises something similar, called recursive, but I can not find any working examples).
Gradle sounds promising as it seems to have good support for several projects. I looked through the documents, but did not immediately find this case as an example. Is there an easy way to achieve this with gradle?
source share