Performing Batch Execution
What if you want to execute a command on multiple files?
If you want to pass a set of files to an external command, use the
apply task, a version of exec that takes filesets. The files in the
fileset are passed as arguments to the command or external
program.
This task is a powerful one, letting you batch your executions and
work with external programs as if they supported filesets. In Example 7-5, the build file is
running the C compiler gcc on a
fileset. In this case, the apply task
executes the command line gcc
-c -o target
source for each .c file
in ${src}, where
source with the name of each matching
.c file in turn, and
target is replaced with the name of the
corresponding .o output file you want
created.
Example 7-5. Using the apply task (ch07/apply/build.xml)
<?xml version="1.0" ?>
<project default="main">
<property name="src" location="source" />
<target name="main">
<apply executable="gcc">
<arg value="-c"/>
<arg value="-o"/>
<targetfile/>
<srcfile/>
<fileset dir="${src}" includes="*.c" />
<mapper from="*.c" to="*.o" type="glob" />
</apply>
</target>
</project>You can see this task's attributes Table 7-4.
Table 7-4. The apply task's attributes
Attribute | Description | Required | Default |
|---|---|---|---|
| Specifies if you want source filenames to be added to the command automatically. Since Ant 1.6. | No | |
| Specifies whether you want to append to output and error files. | No | |
| Specifies the directory in which files will be stored by the task. ... |