自 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,並直接支援 <patternset>
的巢狀 <include>
、<includesfile>
、<exclude>
和 <excludesfile>
元素,以及 <patternset>
的屬性。
選擇器可用作 MultiRootFileSet 中的巢狀元素。如果 MultiRootFileSet 中的任何選擇器未選取檔案或目錄,則它不會被視為 MultiRootFileSet 的一部分。這使得 MultiRootFileSet 等同於 <and>
選擇器容器。
此外,MultiRootFileSet 的 basedir 可以指定為具有單一 file 屬性的巢狀 basedir
元素。
<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 屬性可以同時使用,並且會合併。