DirSet 是一組目錄。這些目錄可以在從基礎目錄開始的目錄樹中找到,並與從多個 PatternSets 和 Selectors 取得的模式相符。
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 | 指定是否應套用大小寫敏感性(true、 yes、 on或 false、 no、 off)。 |
否;預設為 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} 的所有目錄。