模式集

模式 可以分组为集合,并通过其 id 属性进行引用。它们通过 patternset 元素定义,该元素可以嵌套在 文件集 或构成隐式文件集的基于目录的任务中。此外,patternset 可以作为独立元素定义,与 target 处于同一级别,即作为 project 的子元素以及 target 的子元素。

模式可以通过嵌套的 <include><exclude> 元素或以下属性来指定。

属性 描述 默认值
includes 以逗号或空格分隔的必须包含的文件模式列表。 包含所有文件。
includesfile 文件名称;此文件的每一行都被视为包含模式。您可以通过使用嵌套的 includesfile 元素来指定多个包含文件。注意:如果文件为空且文件集没有定义其他模式,则将包含所有文件。 参见 includes
excludes 以逗号或空格分隔的必须排除的文件模式列表。 除了默认排除项之外,不排除任何文件。
excludesfile 文件名称;此文件的每一行都被视为排除模式。您可以通过使用嵌套的 excludesfile 元素来指定多个排除文件。 参见 excludes
refid 使此 patternset 成为对在其他地方定义的 patternset引用。如果指定,则不允许其他属性或嵌套元素。

作为嵌套元素指定的参数

includeexclude

每个这样的元素都定义了要包含或排除的文件的单个模式。

属性 描述 必需
name 要包含/排除的 模式
if 仅在 命名属性已设置 时使用此模式。
unless 仅在 命名属性设置 时使用此模式。

includesfileexcludesfile

如果您想在构建文件之外列出要包含或排除的文件,则应使用 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"/> 进行 引用,由支持此功能的任务或文件集进行引用。

请注意,虽然 includesexcludes 属性接受以逗号或空格分隔的多个元素,但嵌套的 <include><exclude> 元素期望其 name 属性包含单个模式。

嵌套元素允许您使用 ifunless 属性来指定仅在设置属性时才使用该元素,或者仅在未设置属性时才使用该元素。

例如

<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 指向的文件中读取包含模式,前提是已定义具有该名称的属性。