Hi Jonathan,

I've messed with this challenge with varying levels of success.

The primary issue is if you're changing a few modules (say A, B, and C) and
those modules have interdependencies (say C depends on A).  If you go
parallel, C is likely to resolve the old version of A.

Not saying it can't be done, but to make things simpler the last build
pipeline I did in this manner: 1) identify changed modules and build/unit
test them in order (serially), 2) identify impacted non-container modules
(jars, etc. that depend on changed modules, directly or indirectly) and
process them fully parallel , 3) identify impacted container modules (war,
ear, etc.) and process them in parallel.  (not using subant, btw -- just
"runtarget" from ant-contrib and overriding a few properties)

However -- if you're still building to or from a standard disk (or SAN, or
NAS) then you're more likely to get a much bigger benefit to moving over to
SSD to RAM than you will from parallelizing individual modules builds - and
much simpler too.

I normally see commit builds in an I/O bound situation which slows them
down. Try running your build from /dev/shm and see what kind of performance
difference you get.

HTH,

~Tim


On Fri, Jul 8, 2011 at 1:40 PM, Jonathan Williams
<spamhammer1...@gmail.com>wrote:

> Hi,
>
> We currently use Ivy:buildlist + subant to build a large multi-module
> project. As the project grows, the topic of parallelization has inevitably
> come up as one of the ways we could speed up compiles. A search on this
> topic has shown some interest in implementing this in the past, but nothing
> recent or concrete as far as results go. Does anyone have a solution for
> this, or are we SOL?
>
> -Jonathan
>

Reply via email to