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.