DirSet

DirSet 是一組目錄。這些目錄可以在從基礎目錄開始的目錄樹中找到,並與從多個 PatternSetsSelectors 取得的模式相符。

PatternSets 可以指定為巢狀的 <patternset> 元素。此外,DirSet 持有一個隱含的 PatternSet,並直接支援 <patternset> 的巢狀 <include><includesfile><exclude><excludesfile> 元素,以及 <patternset> 的屬性。

Selectors 可用作 DirSet 中的巢狀元素。如果 DirSet 中的任何 Selector 沒有選取目錄,則該目錄不會被視為 DirSet 的一部分。這使得 DirSet 等同於 <and> Selector 容器。

屬性 說明 必要
dir 此 DirSet 的目錄樹根目錄。
includes 必須包含的目錄模式的逗號或空格分隔清單。 否;預設為所有目錄
includesfile 檔案名稱;此檔案的每一行都被視為包含模式。注意:如果檔案為空,且沒有為檔案集定義其他模式,則會包含所有目錄。
excludes 必須排除的目錄模式的逗號或空格分隔清單。 否;預設為無
excludesfile 檔案名稱;此檔案的每一行都被視為排除模式。
casesensitive 指定是否應套用大小寫敏感性(trueyesonfalsenooff)。 否;預設為 true
followsymlinks 是否應追蹤符號連結?請參閱 檔案集文件 否;預設為 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,根目錄為不同的目錄。

<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} 的所有目錄。