模式 可以分组为集合,并通过其 id 属性进行引用。它们通过 patternset 元素定义,该元素可以嵌套在 文件集 或构成隐式文件集的基于目录的任务中。此外,patternset 可以作为独立元素定义,与 target 处于同一级别,即作为 project 的子元素以及 target 的子元素。
模式可以通过嵌套的 <include> 或 <exclude> 元素或以下属性来指定。
| 属性 | 描述 | 默认值 |
|---|---|---|
| includes | 以逗号或空格分隔的必须包含的文件模式列表。 | 包含所有文件。 |
| includesfile | 文件名称;此文件的每一行都被视为包含模式。您可以通过使用嵌套的 includesfile 元素来指定多个包含文件。注意:如果文件为空且文件集没有定义其他模式,则将包含所有文件。 |
参见 includes |
| excludes | 以逗号或空格分隔的必须排除的文件模式列表。 | 除了默认排除项之外,不排除任何文件。 |
| excludesfile | 文件名称;此文件的每一行都被视为排除模式。您可以通过使用嵌套的 excludesfile 元素来指定多个排除文件。 |
参见 excludes |
| refid | 使此 patternset 成为对在其他地方定义的 patternset 的 引用。如果指定,则不允许其他属性或嵌套元素。 |
无 |
include 和 exclude每个这样的元素都定义了要包含或排除的文件的单个模式。
| 属性 | 描述 | 必需 |
|---|---|---|
| name | 要包含/排除的 模式。 | 是 |
| if | 仅在 命名属性已设置 时使用此模式。 | 无 |
| unless | 仅在 命名属性未设置 时使用此模式。 | 无 |
includesfile 和 excludesfile如果您想在构建文件之外列出要包含或排除的文件,则应使用 includesfile/excludesfile 属性或元素。使用属性,您只能指定每种类型的一个文件,而嵌套元素可以指定多次,嵌套元素还支持 if/unless 属性,您可以使用这些属性来测试属性的存在。
| 属性 | 描述 | 必需 |
|---|---|---|
| name | 包含要包含/排除的模式的文件的名称。 | 是 |
| if | 仅在 命名属性已设置 时读取此文件。 | 无 |
| unless | 仅在 命名属性未设置 时读取此文件。 | 无 |
| encoding | 文件的编码。自 Ant 1.10.4 起 | 无,默认值为平台默认值 |
patternset模式集可以相互嵌套,将嵌套模式添加到父模式集中。
invert自 Apache Ant 1.7.1 起
可以使用 <invert> 元素反转嵌套模式集。
<patternset id="non.test.sources"> <include name="**/*.java"/> <exclude name="**/*Test*"/> </patternset>
构建一个模式集,该模式集匹配所有不包含文本 Test 的名称的 .java 文件。此集合可以通过 <patternset refid="non.test.sources"/> 进行 引用,由支持此功能的任务或文件集进行引用。
请注意,虽然 includes 和 excludes 属性接受以逗号或空格分隔的多个元素,但嵌套的 <include> 和 <exclude> 元素期望其 name 属性包含单个模式。
嵌套元素允许您使用 if 和 unless 属性来指定仅在设置属性时才使用该元素,或者仅在未设置属性时才使用该元素。
例如
<patternset id="sources"> <include name="std/**/*.java"/> <include name="prof/**/*.java" if="professional"/> <exclude name="**/*Test*"/> </patternset>
仅在将属性 professional 设置为某个值时才包含子目录 prof 中的文件。
这两个集合
<patternset includesfile="some-file"/>
和
<patternset> <includesfile name="some-file"/> <patternset/>
是相同的。包含模式将从文件 some-file 中读取,每行一个模式。
<patternset>
<includesfile name="some-file"/>
<includesfile name="${some-other-file}"
if="some-other-file"/>
<patternset/>
还将从属性 some-other-file 指向的文件中读取包含模式,前提是已定义具有该名称的属性。