MultiRootFileSet

自 Ant 1.9.4 起

MultiRootFileSet 是一个文件或目录组。这些文件或目录可以在以一组基本目录开头的目录森林中找到,并通过从多个 PatternSetsSelectors 中获取的模式进行匹配。

MultiRootFileSet 充当共享相同模式和选择器的 FileSetsDirSets 的并集。

MultiRootFileSet 支持 FileSet 和 DirSet 的所有属性和嵌套元素,除了 dir 属性。

属性 描述 必需
basedirs 构建 MultiRootFileSet 根目录的逗号分隔目录列表。
cache 是否缓存结果;禁用可能会严重影响性能 否;默认值为 true
type 将包含在此集合中的文件系统实体的类型。可接受的值为
  • file—普通文件
  • dir—目录
  • both—普通文件和目录
否;默认为 file
includes 必须包含的目录模式的逗号或空格分隔列表。 否;默认为所有目录
includesfile 文件名称;此文件的每一行都被视为包含模式。
excludes 必须排除的目录模式的逗号或空格分隔列表。 否;默认为无
excludesfile 文件名称;此文件的每一行都被视为排除模式。
casesensitive 指定是否应应用区分大小写 (trueyesonfalsenooff)。 否;默认为 true
followsymlinks 是否应跟随符号链接?请参阅 fileset 的文档 否;默认为 true
erroronmissingdir 指定如果其中一个基本目录不存在会发生什么。如果为 true,则会发生构建错误,如果为 false,则子树将被忽略/为空。 否;默认为 true

作为嵌套元素指定的参数

PatternSets 可以指定为嵌套的 <patternset> 元素。此外,MultiRootFileSet 包含一个隐式 PatternSet,并直接支持嵌套的 <include><includesfile><exclude><excludesfile> 元素,以及 <patternset> 的属性。

选择器可以在 MultiRootFileSet 中作为嵌套元素使用。如果 MultiRootFileSet 中的任何选择器未选择文件或目录,则它不被视为 MultiRootFileSet 的一部分。这使得 MultiRootFileSet 等效于 <and> 选择器容器。

此外,MultiRootFileSet 的基本目录可以指定为嵌套的 basedir 元素,这些元素具有单个 file 属性。

示例

<multirootfileset basedirs="${build.dir},${other.project.dir}">
  <include name="apps/**/classes"/>
  <exclude name="apps/**/*Test*"/>
</multirootfileset>

${build.dir}${other.project.dir}apps 子目录下找到的 classes 中的所有文件进行分组,除了名称中包含文本 Test 的文件。

<multirootfileset>
  <basedir file="${build.dir}"/>
  <basedir file="${other.project.dir}"
  <include name="apps/**/classes"/>
  <exclude name="apps/**/*Test*"/>
</multirootfileset>

等效于第一个示例,但使用嵌套的 basedir 元素。嵌套元素和 basedirs 属性可以同时使用,并将合并。