Name
parallel
Synopsis
This is a container for other tasks. Each contained task executes in
its own thread, potentially improving overall build performance. The
main build process blocks until all nested tasks are complete. If any
nested task fails, the parallel
task also fails
once all threads are complete.
Warning
Use parallel
only when the contained tasks are
independent of one another. For instance, do not execute a code
generator in parallel with a task that attempts to compile the
generated code. Unless you are comfortable with multithreading
concepts, avoid this task.
The sequential
task is used in conjunction with
parallel
in order to execute groups of tasks
sequentially.
Attributes
None.
Content
Any task, including nested parallel
tasks.
Example Usage
In this example, the client and server portion of an application are
independent of each other and can be compiled concurrently. Before
compiling the client, however, some critical files are copied and
code is generated using a custom Java program. While all of this is
happening inside of the <sequential>
task,
the server code is compiling.
<parallel> <sequential> <!-- copy some critical files first... --> <copy ... /> <!-- run a code generator --> <java ... /> <!-- now compile the client code --> <javac srcdir="${client_srcdir}" destdir="${client_builddir}" includes="com/oreilly/client/**"/> </sequential> <!-- compile the server code in parallel with everything contained in the <sequential> task --> <javac srcdir="${server_srcdir}" destdir="${server_builddir}" ...
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.