模式 可以分组为集合,并通过其 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
指向的文件中读取包含模式,前提是已定义具有该名称的属性。