I am using the ivy:buildlist / subant combination to operate the build for a large project. The project consists of about 20 different sub-projects. The sub-projects each depend on a combination of other sub-projects as well as some 3rd party libraries. Ivy takes care of building them in order for me. That's all great.
The issue I have is that subant does all of this in a single process. As a result, as each sub-project resolves its compile dependencies and then later resolves its junit dependencies, the primary JVM process is retaining all of the classloaders and never unloading them. The result is that my build eventually fails due to running out of memory in the PermGen space. Does anyone know of a way that I can get the sub-projects to build in the correct order, but still have ant fork a new process for each one? This way the primary JVM would not keep adding and retaining classloaders. Btw, when running manually, I can get around the issue by increasing the PermGen space using -XX:MaxPermSize=256m. However, my continuous build system (Cruise Control) seems to want to run ant with the default JVM parameters and this solution only delays the issue anyway. Thanks, -- tBs