You want to include and/or exclude certain files and directories from a build.
Use Ant patterns along with <include> and <exclude> tags, or includes and excludes attributes.
Ant uses a simple pattern syntax for selecting files, which you have undoubtedly seen in other examples throughout this chapter. Here is how you can use this syntax to include all .java files in a particular directory:
includes="src/com/oreilly/util/*.java"
Because Java projects are typically divided into numerous packages and subdirectories, you frequently use the ** wildcard to scan all subdirectories:
includes="src/**/*.java"
This tells Ant to locate all files ending with .java in the src directory and any subdirectories.
In the Ant pattern language, "*" matches any number of characters and "?" matches one character. So you can locate Test1.java and Test2.java as follows:
includes="Test?.java"
Because "?" matches a single character, TestABC.java is not matched by the preceding pattern.
Patterns can be combined. Table 3-2 shows some additional pattern examples.
Pattern |
Matches |
Does not match |
---|---|---|
*.java |
Person.java |
Person.class |
Person*.java |
Person.java, PersonA.java, PersonBoss.java |
P.java, BossPerson.java |
Test?.java |
TestA.java |
Test.java, TestOne.java |
**/*.txt |
a.txt, src/a.txt, src/com/oreilly/b.txt |
Files not ending in .txt |
src/**/*.java |
src/A.java, src/com/oreilly/File.java |
B.java, src/com/oreilly/C.class |
**/a/** |
a (if `a' is a filename), build/File.txt, src/a/File.txt |
a.java, src/b/C.class |
Search for "Directory Based Tasks" in the Ant user manual for a discussion of Ant's pattern matching syntax.