MultiRootFileSet

自 Ant 1.9.4 起

MultiRootFileSet 是一組檔案或目錄。這些檔案或目錄可以在一個目錄森林中找到,從一組基本目錄開始,並與從多個 PatternSetsSelectors 中取得的模式相符。

MultiRootFileSet 作為 FileSetsDirSets 的聯集,它們共用相同的模式和選擇器。

MultiRootFileSet 支援 FileSet 和 DirSet 的所有屬性和巢狀元素,但 dir 屬性除外。

屬性 說明 必要
basedirs 目錄的逗號分隔清單,用於建立 MultiRootFileSet 的根目錄。
cache 是否快取結果;停用可能會嚴重影響效能 否;預設為 true
type 將包含在此集合中的檔案系統實體類型。可接受的值為
  • file—一般檔案
  • dir—目錄
  • both—一般檔案和目錄
否;預設為 file
includes 必須包含的目錄模式的逗號或空格分隔清單。 否;預設為所有目錄
includesfile 檔案名稱;此檔案的每一行都被視為包含模式。
excludes 必須排除的目錄模式的逗號或空格分隔清單。 否;預設為無
excludesfile 檔案名稱;此檔案的每一行都被視為排除模式。
casesensitive 指定是否應套用大小寫敏感性(trueyesonfalsenooff)。 否;預設為 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 屬性可以同時使用,並且會合併。