模式可以分組成集合,然後再透過其 id 屬性來參照。它們是透過 patternset
元素來定義的,這個元素可以嵌套在 FileSet 或構成隱式 FileSet 的目錄式工作中。此外,patternset
可以定義為與 target
同層的獨立元素,也就是說,可以定義為 project
的子元素,也可以定義為 target
的子元素。
模式可以透過嵌套的 <include>
或 <exclude>
元素,或下列屬性來指定。
屬性 | 說明 | 預設值 |
---|---|---|
includes | 必須包含的檔案模式,以逗號或空格分隔。 | 包含所有檔案。 |
includesfile | 檔案名稱;此檔案的每一行都會視為包含模式。你可以使用嵌套的 includesfile 元素來指定多個包含檔案。注意:如果檔案為空,且未定義其他檔案集合的模式,則會包含所有檔案。
|
請參閱 includes |
excludes | 必須排除的檔案模式,以逗號或空格分隔。 | 不排除任何檔案,除了預設排除的檔案。 |
excludesfile | 檔案名稱;此檔案的每一行都會視為排除模式。你可以使用嵌套的 excludesfile 元素來指定多個排除檔案。 |
請參閱 excludes |
refid | 讓這個 patternset 成為對其他地方定義的 patternset 的 參照。如果已指定,則不允許其他屬性或嵌套元素。 |
否 |
include
和 exclude
每個此類元素都定義一個要包含或排除的單一檔案模式。
屬性 | 說明 | 必要 |
---|---|---|
name | 要包含/排除的 模式。 | 是 |
if | 僅在設定指定屬性的情況下使用此模式 if the named property is set。 | 否 |
unless | 僅在未設定指定屬性的情況下使用此模式 if the named property is not set。 | 否 |
includesfile
和 excludesfile
如果您想列出要包含或排除在建置檔案之外的檔案,您應使用 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 參照。
請注意,雖然 includes 和 excludes 屬性接受以逗號或空格分隔的多個元素,但巢狀的 <include>
和 <exclude>
元素預期其名稱屬性只包含一個模式。
巢狀元素允許您使用 if 和 unless 屬性,以指定僅在設定屬性的情況下才使用元素,或僅在未設定屬性的情況下才使用元素。
例如
<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
的屬性,也會從屬性指向的檔案讀取包含模式。