DirSet 是一个目录组。这些目录可以在以基目录开始的目录树中找到,并且通过从多个 PatternSets 和 Selectors 中获取的模式进行匹配。
PatternSets 可以指定为嵌套的 <patternset>
元素。此外,DirSet 还包含一个隐式 PatternSet,并直接支持嵌套的 <include>
、<includesfile>
、<exclude>
和 <excludesfile>
元素,以及 <patternset>
的属性。
Selectors 可以在 DirSet 中作为嵌套元素使用。如果 DirSet 中的任何选择器都没有选择目录,则该目录不被视为 DirSet 的一部分。这使得 DirSet 等同于一个 <and>
选择器容器。
属性 | 描述 | 必需 |
---|---|---|
dir | 此 DirSet 的目录树的根目录。 | 是 |
includes | 必须包含的目录模式的逗号或空格分隔列表。 | 否;默认值为所有目录 |
includesfile | 文件名称;此文件的每一行都被视为一个包含模式。注意:如果文件为空并且没有为文件集定义其他模式,则将包含所有目录。 | 否 |
excludes | 必须排除的目录模式的逗号或空格分隔列表。 | 否;默认值为无 |
excludesfile | 文件名称;此文件的每一行都被视为一个排除模式。 | 否 |
casesensitive | 指定是否应应用区分大小写 (true、 yes、 on或 false、 no、 off)。 |
否;默认值为 true |
followsymlinks | 是否应跟随符号链接?请参阅 fileset 的文档。 | 否;默认值为 true |
erroronmissingdir | 指定如果基目录不存在会发生什么。如果为 true,则会发生构建错误,如果为 false,则会忽略/清空 dirset。自 Apache Ant 1.7.1 起 |
否;默认值为 true(出于向后兼容性的原因) |
refid | 使此 dirset 成为对在其他地方定义的 dirset 的 引用。如果指定,则不允许其他属性或嵌套元素。 |
否 |
<dirset dir="${build.dir}"> <include name="apps/**/classes"/> <exclude name="apps/**/*Test*"/> </dirset>
对在 ${build.dir} 的 apps 子目录下找到的所有名为 classes 的目录进行分组,但排除名称中包含 Test 文本的目录。
<dirset dir="${build.dir}"> <patternset id="non.test.classes"> <include name="apps/**/classes"/> <exclude name="apps/**/*Test*"/> </patternset> </dirset>
对与上述示例相同的目录进行分组,但还建立一个可以在其他 <dirset>
元素中引用的 PatternSet,该 PatternSet 位于不同的目录下。
<dirset dir="${debug_build.dir}"> <patternset refid="non.test.classes"/> </dirset>
对目录 ${debug_build.dir} 中的所有目录进行分组,使用与上述示例相同的模式。
<dirset id="dirset" dir="${workingdir}"> <present targetdir="${workingdir}"> <mapper type="glob" from="*" to="*/${markerfile}"/> </present> </dirset>
选择 ${workingdir} 下的某个位置包含 ${markerfile} 的所有目录。