views:

136

answers:

3

Distcc makes it easy to distribute a C or C++ compile job across a number of machines, and is a godsend for working with large, frequently-built codebases.

An increasing number of our large projects are built in Java these days, however. Does anyone know of something equivalent or similar for Java? While it would be great if it would go down to the javac level, our multi-module projects would benefit from being able to distribute each maven 2 sub-project to a different machine. (Tying into maven might actually be better, as that would make it possible to distribute tests and packaging, which often take a significant portion of our build time.)

Thanks for any information or pointers!

+1  A: 

Try a CI server like TeamCity. They can spread project builds on several agents.

Aaron Digulla
I like the idea, but would ideally like our developers' builds to be able to benefit as well -- not just our CI builds. I will, however, take a look at TeamCity; it looks neat.
Sean McMains
If you tell the CI server to deploy the artifacts to your inhouse repository, developers can download the latest build automatically (instead of building it on their own).
Aaron Digulla
+1  A: 

To my knowledge, there is no equivalent of distcc in the Java world.

As mentioned by Aaron, many Continuous Integration servers (open source like Hudson or commercial like Bamboo, TeamCity) have support for distributed builds but I don't think that this will solve your issue. AFAIK, these tools distribute build jobs (i.e. a whole multi-modules maven build), not the build of the modules of a multi-modules build (which might have dependencies, need the output of the previous module and might thus not being parallelized anyway). In other words, this is useful if you have many projects/branches on a build farm (at least for Hudson, I have less knowledge of the others solutions).

Pascal Thivent
+1  A: 

Here's a related question on doing parallel builds in Maven:

http://stackoverflow.com/questions/581465/maven-how-to-do-parallel-builds

One of the questions has a link to a Jira ticket to enable this functionality, which would provide much of the benefit I'm looking for:

http://jira.codehaus.org/browse/MNG-3004

I'll definitely be watching that ticket with interest. :)

Sean McMains