D.4 FileSet

FileSets offer an easy and straightforward way to include files. The tag supports Selectors and PatternSets. Additionally, you can include/exclude files in/from a fileset using the <include>/<exclude> tags. In patterns, one asterisk (*) maps to a part of a file/directory name within a directory level. Two asterisks (**) may include above the "border" of the directory separator.

Table D.3:  Attributes for the <fileset> tag

NameTypeDescriptionDefaultRequired
dirStringThe directory, the paths given in include/exclude are relative to.n/aYes
defaultexcludesBooleanWhether default exclusions should be used or not. Default excludes are: *~, #*#, .#*, %*%, CVS, CVS/**, .cvsignore, SCCS, SCCS/**, vssver.scc, .svn, .svn/**, ._*, .DS_Store, .darcs, .darcs/**, .git, .git/**, .gitattributes, .gitignore, .gitmodules trueNo
casesensitiveBooleanThe case sensitivity of the file system.trueNo
expandsymboliclinksBooleanWhether to expand/dereference (follow) symbolic links - set to 'true' to emulate old Phing behavior.falseNo
erroronmissingdirBooleanSpecify what happens if the base directory does not exist. If true a build error will happen, if false, the fileset will be ignored/empty.falseNo
includesStringComma- or space-separated list of patterns of files that must be included; all files are included when omitted.n/aNo
includesfileStringThe name of a file; each line of this file is taken to be an include pattern.n/aNo
excludesStringcomma- or space-separated list of patterns of files that must be excluded; no files (except default excludes) are excluded when omitted.n/aNo
excludesfileStringThe name of a file; each line of this file is taken to be an exclude pattern.n/aNo

D.4.1 Using wildcards

  • test*.xml will include test_42.xml, but it will not include test/some.xml.

  • test**.xml fits to test_42.xml as well as to test/bla.xml, for example.

  • **/*.ent.xml fits to all files that end with ent.xml in all subdirectories of the directory specified with the dir attribute of the <fileset> tag. However, it will not include any files that are directly in the base directory of the file set.

D.4.2 Usage Examples

<fileset dir="/etc" >
                <include name="httpd/**" />
                <include name="php.ini" />
                </fileset>

                <fileset dir="/etc" >
                <patternset>
                <include name="**/*.php"/>
                <exclude name="**/*Test*"/>
                </patternset>
                </fileset>

This will include the apache configuration and PHP configuration file from /etc.

<fileset id="files" dir="${phing.dir}/etc">
    <excludesfile name="test"/>
</fileset>
<target name="test">
    <echo msg="${toString:files}"/>
</target>

This will exclude all files from a file named test. Each line of this file is taken to be an exclude pattern.

D.4.3 Nested tags

The tags that are supported by Fileset are:

The <include> and the <exclude> tags must have a name attribute that contains the pattern to include/exclude.