自 Ant 1.9.4 起
MultiRootFileSet 是一个文件或目录组。这些文件或目录可以在以一组基本目录开头的目录森林中找到,并通过从多个 PatternSets 和 Selectors 中获取的模式进行匹配。
MultiRootFileSet 充当共享相同模式和选择器的 FileSets 和 DirSets 的并集。
MultiRootFileSet 支持 FileSet 和 DirSet 的所有属性和嵌套元素,除了 dir 属性。
属性 | 描述 | 必需 |
---|---|---|
basedirs | 构建 MultiRootFileSet 根目录的逗号分隔目录列表。 | 否 |
cache | 是否缓存结果;禁用可能会严重影响性能 | 否;默认值为 true |
type | 将包含在此集合中的文件系统实体的类型。可接受的值为
|
否;默认为 file |
includes | 必须包含的目录模式的逗号或空格分隔列表。 | 否;默认为所有目录 |
includesfile | 文件名称;此文件的每一行都被视为包含模式。 | 否 |
excludes | 必须排除的目录模式的逗号或空格分隔列表。 | 否;默认为无 |
excludesfile | 文件名称;此文件的每一行都被视为排除模式。 | 否 |
casesensitive | 指定是否应应用区分大小写 (true、 yes、 on或 false、 no、 off)。 |
否;默认为 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 属性可以同时使用,并将合并。