PatternSet

模式可以分組成集合,然後再透過其 id 屬性來參照。它們是透過 patternset 元素來定義的,這個元素可以嵌套在 FileSet 或構成隱式 FileSet 的目錄式工作中。此外,patternset 可以定義為與 target 同層的獨立元素,也就是說,可以定義為 project 的子元素,也可以定義為 target 的子元素。

模式可以透過嵌套的 <include><exclude> 元素,或下列屬性來指定。

屬性 說明 預設值
includes 必須包含的檔案模式,以逗號或空格分隔。 包含所有檔案。
includesfile 檔案名稱;此檔案的每一行都會視為包含模式。你可以使用嵌套的 includesfile 元素來指定多個包含檔案。注意:如果檔案為空,且未定義其他檔案集合的模式,則會包含所有檔案。 請參閱 includes
excludes 必須排除的檔案模式,以逗號或空格分隔。 不排除任何檔案,除了預設排除的檔案。
excludesfile 檔案名稱;此檔案的每一行都會視為排除模式。你可以使用嵌套的 excludesfile 元素來指定多個排除檔案。 請參閱 excludes
refid 讓這個 patternset 成為對其他地方定義的 patternset參照。如果已指定,則不允許其他屬性或嵌套元素。

指定為嵌套元素的參數

includeexclude

每個此類元素都定義一個要包含或排除的單一檔案模式。

屬性 說明 必要
name 要包含/排除的 模式
if 僅在設定指定屬性的情況下使用此模式 if the named property is set
unless 僅在未設定指定屬性的情況下使用此模式 if the named property is not set

includesfileexcludesfile

如果您想列出要包含或排除在建置檔案之外的檔案,您應使用 includesfile/excludesfile 屬性或元素。使用屬性時,您只能指定每種類型的單一檔案,而巢狀元素可以指定多次,巢狀元素也支援 if/unless 屬性,您可以使用這些屬性來測試屬性的存在。

屬性 說明 必要
name 包含要包含/排除的模式的檔案名稱。
if 僅在設定指定屬性的情況下讀取此檔案 如果設定了指定屬性
unless 僅在未設定指定屬性的情況下讀取此檔案 如果未設定指定屬性
編碼 檔案的編碼。自 Ant 1.10.4 起 否,預設為平台預設

模式組

模式組可以巢狀在彼此內部,將巢狀模式新增到父模式組。

反轉

自 Apache Ant 1.7.1 起

可以使用 <invert> 元素反轉巢狀模式組。

範例

<patternset id="non.test.sources">
  <include name="**/*.java"/>
  <exclude name="**/*Test*"/>
</patternset>

建立一組模式,符合所有名稱中不包含文字 Test.java 檔案。此組可以透過 <patternset refid="non.test.sources"/> 讓支援此功能的任務或 FileSets 參照

請注意,雖然 includesexcludes 屬性接受以逗號或空格分隔的多個元素,但巢狀的 <include><exclude> 元素預期其名稱屬性只包含一個模式。

巢狀元素允許您使用 ifunless 屬性,以指定僅在設定屬性的情況下才使用元素,或僅在未設定屬性的情況下才使用元素。

例如

<patternset id="sources">
  <include name="std/**/*.java"/>
  <include name="prof/**/*.java" if="professional"/>
  <exclude name="**/*Test*"/>
</patternset>

僅在將屬性 professional 設定為某個值的情況下,才會包含子目錄 prof 中的檔案。

這兩個組

<patternset includesfile="some-file"/>

<patternset>
  <includesfile name="some-file"/>
<patternset/>

是相同的。包含模式會從檔案 some-file 讀取,每行一個模式。

<patternset>
  <includesfile name="some-file"/>
  <includesfile name="${some-other-file}"
                if="some-other-file"/>
<patternset/>

如果已定義名稱為 some-other-file 的屬性,也會從屬性指向的檔案讀取包含模式。