A system for automatically segmenting the compilation of a large Java
project under a controller node to a grid of slave nodes so as to reduce
build time. A build tree scanner at the controller node sizes the number
of files in the project and the length of each source file. Each slave
node has a complete and synchronized set of all compilable units in the
project. The controller node automatically segments the source files into
a number of filesets commensurate with the number and resource capacities
of slave nodes available for the build, allocates the filesets to the
slave nodes, and automatically generates build filesets from a master
dependency tree built from dependency trees constructed by each slave
node. The build sets are then equitably allocated to the slave nodes.
Then the targets are reaped and placed on the controller node, which
performs post-compilation tasks.