The Parallel Problem
Ant versions since 1.4 include a task that runs other tasks in parallel. Before 1.4, tasks within a target ran sequentially — in most cases, this was okay and to be expected. However, targets that, for example, compile mutually exclusive sets of code or create unrelated directories can benefit from threading these operations so that they are run simultaneously. Users with multiple-CPU systems see performance benefits from parallelizing such tasks. Another benefit of parallelization is for those people who wish to run unit tests against application servers. Their application servers and tests must run simultaneously, which was not easily done in Ant before Version 1.4. Unfortunately, for those who write or have written custom build listeners, parallelization can break their previously working code.
Some build event listeners rely upon certain events occurring in a
particular order. For example, if a listener expects to see a
taskFinished( )
event after the
taskStarted( )
event for the
javac
task, the listener would fail or act
strangely if two javac
tasks were run in parallel.
The second javac
may end before the first.
Listener code, while watching for the event saying Ant is finished
with the second javac
task, may prematurely
trigger operations intended for the first javac
task, or vice versa. Consequently, the output from, or operations of,
the listener would be wrong, possibly leading to further problems. If
you’re ever given a buildfile using the
parallel ...
Get Ant: The Definitive Guide now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.