DirSet

DirSet 是一个目录组。这些目录可以在以基目录开始的目录树中找到,并且通过从多个 PatternSetsSelectors 中获取的模式进行匹配。

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

Selectors 可以在 DirSet 中作为嵌套元素使用。如果 DirSet 中的任何选择器都没有选择目录,则该目录不被视为 DirSet 的一部分。这使得 DirSet 等同于一个 <and> 选择器容器。

属性 描述 必需
dir 此 DirSet 的目录树的根目录。
includes 必须包含的目录模式的逗号或空格分隔列表。 否;默认值为所有目录
includesfile 文件名称;此文件的每一行都被视为一个包含模式。注意:如果文件为空并且没有为文件集定义其他模式,则将包含所有目录。
excludes 必须排除的目录模式的逗号或空格分隔列表。 否;默认值为无
excludesfile 文件名称;此文件的每一行都被视为一个排除模式。
casesensitive 指定是否应应用区分大小写 (trueyesonfalsenooff)。 否;默认值为 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} 的所有目录。