|
- <!DOCTYPE html>
- <!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- https://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
- <html lang="en">
-
- <head>
- <link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
- <title>FileSet Type</title>
- </head>
-
- <body>
-
- <h2 id="fileset">FileSet</h2>
- <p>A FileSet is a group of files. These files can be found in a directory tree starting in a
- base directory and are matched by patterns taken from a number
- of <a href="patternset.html">PatternSets</a> and <a href="selectors.html">Selectors</a>.</p>
- <p>PatternSets can be specified as nested <code><patternset></code> elements. In
- addition, FileSet holds an implicit PatternSet and supports the
- nested <code><include></code>, <code><includesfile></code>, <code><exclude></code>
- and <code><excludesfile></code> elements of PatternSet directly, as well as PatternSet's
- attributes.</p>
- <p>Selectors are available as nested elements within the FileSet. If any of the selectors
- within the FileSet do not select the file, the file is not considered part of the FileSet. This
- makes a FileSet equivalent to an <code><and></code> selector container.</p>
- <table class="attr">
- <tr>
- <th scope="col">Attribute</th>
- <th scope="col">Description</th>
- <th scope="col">Required</th>
- </tr>
- <tr>
- <td>dir</td>
- <td>the root of the directory tree of this FileSet.</td>
- <td rowspan="2">Exactly one of dir or file must be specified</td>
- </tr>
- <tr>
- <td>file</td>
- <td class="left">shortcut for specifying a single-file fileset</td>
- </tr>
- <tr>
- <td>defaultexcludes</td>
- <td>indicates whether <a href="../dirtasks.html#defaultexcludes">default excludes</a> should
- be used or not (<code>yes|no</code>).</td>
- <td>No; defaults to <q>yes</q></td>
- </tr>
- <tr>
- <td>includes</td>
- <td>comma- or space-separated list of patterns of files that must be included.</td>
- <td>No; defaults to all files</td>
- </tr>
- <tr>
- <td>includesfile</td>
- <td>name of a file; each line of this file is taken to be an include pattern.<br/>
- <strong>Note</strong>: if the file is empty and there are no other patterns defined for
- the fileset, all files will be included.
- </td>
- <td>No</td>
- </tr>
- <tr>
- <td>excludes</td>
- <td>comma- or space-separated list of patterns of files that must be excluded.</td>
- <td>No; defaults to default excludes or none if <var>defaultexcludes</var> is <q>no</q></td>
- </tr>
- <tr>
- <td>excludesfile</td>
- <td>name of a file; each line of this file is taken to be an exclude pattern.</td>
- <td>No</td>
- </tr>
- <tr>
- <td>casesensitive</td>
- <td>Must the include and exclude patterns be treated in a case sensitive way?</td>
- <td>No; defaults to <q>true</q></td>
- </tr>
- <tr>
- <td>followsymlinks</td>
- <td>Shall symbolic links be followed? See the note <a href="#symlink">below</a>.</td>
- <td>No; defaults to <q>true</q></td>
- </tr>
- <tr>
- <td>erroronmissingdir</td>
- <td>
- Specify what happens if the base directory does not exist. If <q>true</q> a build error
- will happen, if <q>false</q>, the fileset will be ignored/empty.
- <em>Since Apache Ant 1.7.1</em>
- </td>
- <td>No; defaults to <q>true</q> (for backward compatibility reasons)</td>
- </tr>
- </table>
-
- <p id="symlink"><strong>Note</strong>: All files/directories for which the canonical path is
- different from its path are considered symbolic links. On Unix systems this usually means the
- file really is a symbolic link but it may lead to false results on other platforms.</p>
-
- <p>Ant is restricted to features that JRE considers portable, and symbolic links is one such feature
- that was long considered non-portable. That has changed with Java 7 and NIO.2, yet full support for
- symbolic links is still lacking (notably, in Zip files). Full support of symbolic links in Ant would
- require a different implementation of FileSet and revision of all tasks and/or types that derive
- from it. Currently, the semantics of <var>followsymlinks</var> in FileSet is such that <q>false</q>
- excludes symbolic links completely, and <q>true</q> allows symbolic links to be considered by
- selectors, which may have their own <var>followsymlinks</var> attributes with proper semantics;
- i.e., <q>false</q> allows selector to inspect properties of a symbolic link itself, and <q>true</q>
- those of its target.
- </p>
-
- <h4>Examples</h4>
- <pre>
- <fileset dir="${server.src}" casesensitive="yes">
- <include name="**/*.java"/>
- <exclude name="**/*Test*"/>
- </fileset>
- </pre>
- <p>Groups all files in directory <samp>${server.src}</samp> that are Java source files and don't
- have the text <samp>Test</samp> in their name.</p>
-
- <pre>
- <fileset dir="${server.src}" casesensitive="yes">
- <patternset id="non.test.sources">
- <include name="**/*.java"/>
- <exclude name="**/*Test*"/>
- </patternset>
- </fileset>
- </pre>
- <p>Groups the same files as the above example, but also establishes a PatternSet that can be
- referenced in other <code><fileset></code> elements, rooted at a different directory.</p>
-
- <pre>
- <fileset dir="${client.src}" >
- <patternset refid="non.test.sources"/>
- </fileset>
- </pre>
- <p>Groups all files in directory <samp>${client.src}</samp>, using the same patterns as the
- above example.</p>
-
- <pre>
- <fileset dir="${server.src}" casesensitive="yes">
- <filename name="**/*.java"/>
- <filename name="**/*Test*" negate="true"/>
- </fileset>
- </pre>
- <p>Groups the same files as the top example, but using the <code><filename></code>
- selector.</p>
-
- <pre>
- <fileset dir="${server.src}" casesensitive="yes">
- <filename name="**/*.java"/>
- <not>
- <filename name="**/*Test*"/>
- </not>
- </fileset>
- </pre>
- <p>Groups the same files as the previous example using a combination of
- the <code><filename></code> selector and the <code><not></code> selector
- container.</p>
-
- <pre><fileset dir="src" includes="main/"/></pre>
- <p>Selects all files in <samp>src/main</samp> (e.g. <samp>src/main/Foo.java</samp>
- or <samp>src/main/application/Bar.java</samp>).</p>
-
- </body>
- </html>
|