類檔案實體可以抽象成資源的概念。除了提供存取類檔案屬性的功能外,資源實作也應該在可能的情況下提供讀取內容和/或寫入內容到底層實體的方法。儘管資源的概念是在 Apache Ant 1.5.2 中引入的,但資源可供明確使用自 Ant 1.7 起。
基本資源。其他資源類型衍生自此基本類型;因此所有屬性都可用,儘管在多數情況下不相關的屬性將會被忽略。此實作和所有資源實作也可以作為單一元素的資源集合使用。
屬性 | 說明 | 必要 |
---|---|---|
name | 此資源的名稱 | 否 |
exists | 此資源是否存在 | 否;預設為 true |
lastmodified | 此資源的最後修改時間 | 否 |
directory | 此資源是否為目錄類型 | 否;預設為 false |
size | 此資源的大小 | 否 |
refid | 使此資源 成為在其他地方定義的資源 的參考。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
表示可透過本機檔案系統慣例存取的檔案。
屬性 | 說明 | 必要 |
---|---|---|
file | 此資源表示的檔案 | 是 |
basedir | 此資源的基礎目錄。當設定此屬性時,嘗試存取資源的名稱會產生相對於此位置的路徑。 | 否 |
refid | 使此檔案 成為在其他地方定義的檔案 的參考。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
表示可透過 Java 類別載入器載入的資源。
屬性 | 說明 | 必要 |
---|---|---|
name | 資源的名稱。 | 是 |
classpath | 在尋找資源時要使用的類別路徑。 | 否 |
classpathref | 在尋找資源時要使用的類別路徑,以 參照 形式提供,指向其他地方定義的 <path> 。 |
否 |
loaderRef | 用於載入資源的載入器名稱,由指定的類別路徑建構。 | 否 |
parentFirst | 在使用巢狀類別路徑時,是否先諮詢父類別載入器,父類別載入器很可能是系統類別載入器。 自 Ant 1.8.0 起 |
否;預設為 true |
refid | 使這個 javaresource 成為 參照,指向其他地方定義的 javaresource 。如果指定,不允許其他屬性或巢狀元素。 |
否 |
類別路徑也可以指定為巢狀類別路徑元素,其中 <classpath>
是 類似路徑的結構。
載入 Java 常數的值。作為 javaresource 的專門化,支援其所有屬性和巢狀元素。常數必須指定為 public static
,否則無法載入。
屬性 | 說明 | 必要 |
---|---|---|
name | 資源的名稱。必須指定為完全限定的欄位名稱。 | 是 |
refid | 使這個 javaconstant 成為 參照,指向其他地方定義的 javaconstant 。如果指定,不允許其他屬性或巢狀元素。 |
否 |
這會將 org.acme.Main
類別的常數 VERSION
的值載入到 version 屬性中。尋找該類別的類別路徑透過巢狀 classpath
元素提供。
<loadresource property="version"> <javaconstant name="org.acme.Main.VERSION"> <classpath> <pathelement location="${acme.lib.dir}"/> </classpath> </javaconstant> </loadresource>
使用該常數的內容 (build.xml
),建立一個新的檔案 c:/temp/org.apache.tools.ant.Main.DEFAULT_BUILD_FILENAME。
<copy todir="c:/temp"> <javaconstant name="org.apache.tools.ant.Main.DEFAULT_BUILD_FILENAME"/> </copy>
代表 ZIP 檔案中的項目。可以使用 archive 屬性或巢狀單一元素資源集合來指定檔案。zipentry
僅支援檔案系統資源作為巢狀元素。
屬性 | 說明 | 必要 |
---|---|---|
zipfile | 包含此資源的 zip 檔案 | 是,除非已指定巢狀資源集合 |
archive | zipfile 的別名 | |
name | 已封存資源的名稱 | 是 |
encoding | zip 檔案的編碼 | 否;預設為 JVM 預設字元編碼 |
refid | 使這個 propertyresource 成為 參照,指向其他地方定義的 propertyresource 。如果指定,不允許其他屬性或巢狀元素。 |
否 |
代表 TAR 檔案中的項目。可以使用 archive 屬性或巢狀單一元素資源集合來指定檔案。
屬性 | 說明 | 必要 |
---|---|---|
archive | 包含此資源的 tar 檔案 | 是,除非已指定巢狀資源集合 |
name | 已封存資源的名稱 | 是 |
這不是獨立資源,而是提供即時壓縮資源內容的包裝器。單一元素資源集合必須指定為巢狀元素。
這不是獨立資源,而是提供即時壓縮資源內容的包裝器。單一元素資源集合必須指定為巢狀元素。
這不是獨立資源,而是提供即時壓縮資源內容的包裝器。單一元素資源集合必須指定為巢狀元素。
XZ 壓縮支援已於 Apache Ant 1.10.1 之後新增,且依賴於未包含在 Ant 發行版中的外部函式庫。請參閱 函式庫依賴關係 以取得更多資訊。
代表 URL。
屬性 | 說明 | 必要 |
---|---|---|
url | 要公開的 URL | 其中一個 |
file | 要作為 file: URL 公開的檔案 |
|
baseUrl | 必須與 relativePath 結合的基本 URL | |
relativePath | 與 baseUrl 結合時定義 URL 的相對路徑 | 如果使用 baseUrl |
refid | 使此 url 成為對其他地方定義的 url 的 參考。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
代表 Java 字串。可以寫入,但只能寫入一次,之後再次寫入將會產生錯誤。
屬性 | 說明 | 必要 |
---|---|---|
value | 此資源的值 | 否 |
refid | 使此 string 成為對其他地方定義的 string 的 參考。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
資源也支援巢狀文字,前提是未設定 value 屬性
<string> self.log("Ant version =${ant.version}"); </string>
代表 Ant 屬性。
屬性 | 說明 | 必要 |
---|---|---|
name | 屬性名稱 | 是 |
資源集合是將多個 資源 分組在一起的實體抽象。Ant 的幾個「舊版」資料類型已修改為資源集合行為
奇怪的是,某些任務甚至可以合理地表現為資源集合
一般資源集合,設計用於 references。例如,如果第三方 Ant 任務產生一個未知類型的資源集合,仍然可以使用 <resources>
集合來存取。這種集合類型的次要用途是作為其他資源集合的容器,保留巢狀集合的順序以及重複資源(與 union 相反)。
屬性 | 說明 | 必要 |
---|---|---|
cache | 是否快取結果。自 Ant 1.8.0 起 | 否;預設為 false |
refid | 讓這個 resourcecollection 成為對在其他地方定義的 resourcecollection 的 參考。如果已指定,則不允許其他屬性或巢狀元素。 |
否 |
一組檔案。這些檔案會由從多個 PatternSets 取得的絕對模式來比對。這些模式可以指定為巢狀的 <patternset>
元素。此外,<files>
有一個隱含的 PatternSet,並直接支援 PatternSet 的巢狀 <include>
、<includesfile>
、<exclude>
和 <excludesfile>
元素,以及 PatternSet 的屬性。
檔案選擇器可用作巢狀元素。檔案必須由所有選擇器選取才能包含在內;因此,<files>
等同於 <and>
檔案選擇器容器。
簡單來說,此類型等同於沒有基本目錄的 fileset。請注意,在沒有基本目錄的情況下,檔案系統掃描完全根據包含和排除模式進行。在基於模式選擇包含檔案後,檔案名稱(或任何)選擇器只能影響掃描程序。
屬性 | 說明 | 必要 |
---|---|---|
包含 | 必須包含的檔案模式的逗號或空格分隔清單 | 至少包含其中一項 |
包含檔案 | 檔案名稱;此檔案的每一行都被視為包含模式。 | |
排除 | 必須排除的檔案模式的逗號或空格分隔清單 | 否;如果 defaultexcludes 為 no,則預設為預設排除或無 |
排除檔案 | 檔案名稱;此檔案的每一行都被視為排除模式。 | |
預設排除 | 是否應使用 預設排除 | 否;預設為 true |
區分大小寫 | 模式是否區分大小寫 | 否;預設為 true |
追蹤符號連結 | 是否追蹤符號連結(請參閱下方的註解) | 否;預設為 true |
refid | 使此 files 成為對在其他地方定義的 files 的 參考。如果已指定,則不允許其他屬性或巢狀元素。 |
否 |
註解:正規路徑與其路徑不同的所有檔案/目錄都被視為符號連結。在 Unix 系統中,這通常表示檔案確實是符號連結,但它可能會導致其他平台上的錯誤結果。
使用資源選擇器限制巢狀資源集合
屬性 | 說明 | 必要 |
---|---|---|
cache | 是否快取結果;停用可能會嚴重影響效能 | 否;預設為 true |
refid | 使此 restrict 成為對在其他地方定義的 restrict 的 參考。如果已指定,則不允許其他屬性或巢狀元素。 |
否 |
需要單一資源集合。
巢狀資源選擇器用於「縮小」包含的資源,並透過邏輯 AND 結合。這些選擇器仿照 檔案選擇器,但不出所料地針對資源。內部 antlib org.apache.tools.ant.types.resources.selectors
中有許多內建資源選擇器
and巢狀資源選擇器。
or巢狀資源選擇器。
not巢狀資源選擇器。
依名稱選取資源。
屬性 | 說明 | 必要 |
---|---|---|
name | 使用標準 Ant 模式測試的名稱模式。 | 兩個中的其中一個 |
regex | 用於選取檔案的正規表示式。 | |
區分大小寫 | 名稱比較是否區分大小寫 | 否;預設為 true |
handledirsep |
如果指定此選項,則對應器會將資源名稱或名稱屬性中的 \ 字元視為 / 以進行比對。此屬性可以是 true或 false。自 Ant 1.8.0 起 | 否;預設為 false |
選取現有資源。
依日期選取資源。
屬性 | 說明 | 必要 |
---|---|---|
millis | 自 1970 年 1 月 1 日起的毫秒數中的比較日期/時間 | 其中之一 |
datetime | 格式化的比較日期/時間 | |
pattern | 使用當前地區設定與 datetime 屬性相容的 SimpleDateFormat 模式 |
否;預設為使用美國地區設定的 MM/dd/yyyy hh:mm a |
granularity | 比較檔案修改時間時使用的寬限毫秒數。這是必要的,因為並非每個檔案系統都支援追蹤毫秒等級的最後修改時間。 | 否;預設值因平台而異:FAT 檔案系統 = 2 秒;Unix = 1 秒;NTFS = 1 毫秒。 |
when | 其中之一 before、 after、 equal |
否;預設 equal |
依類型(檔案或目錄)選取資源。
屬性 | 說明 | 必要 |
---|---|---|
type | 其中之一 file、 dir、 any(自 Ant 1.8 起) |
是 |
依大小選取資源。
屬性 | 說明 | 必要 |
---|---|---|
size | 要比較的檔案大小 | 是 |
when | 其中之一 equal、 eq、 greater、 gt、 less、 lt、 ge(大於或等於)、 ne(不等於)、 le(小於或等於) |
否;預設 equal |
依類型選取資源。
屬性 | 說明 | 必要 |
---|---|---|
class | 資源必須為其實例的類別 | 其中之一 |
type | 必須可從資源指派的 Ant 類型 | |
uri | 必須在其中定義 type 的 URI | 否 |
如果資源由所有巢狀資源選取器選取,則選取該資源。
如果資源由至少一個巢狀資源選取器選取,則選取該資源。
否定單一允許的巢狀資源選取器的選取結果。
如果資源未由任何巢狀資源選取器選取,則選取該資源。
如果資源由多數巢狀資源選取器選取,則選取該資源。
屬性 | 說明 | 必要 |
---|---|---|
allowtie | 當巢狀資源選取器數量為偶數時,是否將平手視為多數 | 否;預設為 true |
根據資源與一個或多個「控制」資源的比較,使用巢狀 資源比較器 來選取資源。
屬性 | 說明 | 必要 |
---|---|---|
when | 比較 (equal/ eq、 greater/ gt、 less/ lt、 le(小於或等於)、 ge(大於或等於)、 ne(不等於)。 |
否;預設 equal |
against | 量詞 (all/ each/ every、 any/ some、(剛好) one、 most/ majority、 none。 |
否;預設 all |
必須使用巢狀 <control> 元素(表示 resources 集合)來指定將針對其進行比較的資源。
假設命名空間設定
rsel="antlib:org.apache.tools.ant.types.resources.selectors" rcmp="antlib:org.apache.tools.ant.types.resources.comparators"
<restrict> <fileset dir="src" includes="a,b,c,d,e,f,g"/> <rsel:compare when="le" against="all"> <control> <resource name="d"/> </control> <rcmp:name/> </rsel:compare> </restrict>
選取檔案 a、b、c 和 d。
<project rsel="antlib:org.apache.tools.ant.types.resources.selectors"> <macrodef name="copyFromPath"> <attribute name="todir"/> <attribute name="refid"/> <element name="nested-resource-selectors" optional="yes" implicit="true"/> <sequential> <mkdir dir="@{todir}" taskname="copyFromPath"/> <copy todir="@{todir}" taskname="copyFromPath"> <restrict> <path refid="@{refid}"/> <rsel:or> <nested-resource-selectors/> </rsel:or> </restrict> <flattenmapper/> </copy> </sequential> </macrodef> <copyFromPath refid="classpath" todir="todir"> <rsel:name name="log4j.properties"/> <rsel:name name="default.properties"/> </copyFromPath> </project>
建立 todir 目錄,並從類別路徑(編譯時已使用)複製(如果存在)檔案 log4j.properties 和 default.properties。
<project> <filelist id="allfiles" dir="${ant.home}/bin" files="ant.cmd,foo.txt,ant.bat,bar.txt,ant"/> <restrict id="missingfiles"> <filelist refid="allfiles"/> <rsel:not xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors"> <rsel:exists/> </rsel:not> </restrict> <echo>These files are missed: ${toString:missingfiles}</echo> </project>
資源集合 allfiles
定義預期的檔案清單。限制 missingfiles
使用 <not><exists>
選取器來取得所有不存在的檔案。最後,我們使用 toString:
pathshortcut 以可讀形式取得它們:[echo] 遺失下列檔案:....foo.txt;....bar.txt
根據資源的自然順序,或根據一個或多個巢狀 資源比較器,對巢狀資源集合進行排序
屬性 | 說明 | 必要 |
---|---|---|
cache | 是否快取結果;停用可能會嚴重影響效能 | 否;預設為 true |
refid | 將此 sort 設定為對其他地方定義的 sort 的 參考。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
需要單一資源集合。
可透過指定一個或多個資源比較器來控制和自訂排序。資源可依據多個條件進行排序;最先指定的條件為「最外層」,最後指定的條件為「最內層」。內部 antlib org.apache.tools.ant.types.resources.comparators
中有數個內建資源比較器
依名稱排序資源。
依存在與否排序資源。不存在視為「小於」存在。
依日期排序資源。
依類型(檔案或目錄)排序資源。由於目錄包含檔案,因此視為「大於」。
依大小排序資源。
依內容排序資源。
屬性 | 說明 | 必要 |
---|---|---|
binary | 是否應以二進位模式比較內容。如果為 false,則會不考慮特定於平台的行尾慣例來比較內容。 |
否;預設為 true |
反轉自然排序順序,或單一巢狀比較器的順序。
<property name="eol" value="${line.separator}"/> <pathconvert property="sorted" pathsep="${eol}"> <sort> <tokens> <string value="foo bar etc baz"/> <stringtokenizer/> </tokens> </sort> </pathconvert>
字串 foo bar etc baz
類型的資源會由 stringtokenizer
切割成四個標記。這些標記會進行排序,而 sorted
會取得 bar baz etc foo
的值。
<sort> <fileset dir="foo"/> <reverse xmlns="antlib:org.apache.tools.ant.types.resources.comparators"> <date/> </reverse> </sort>
這會從 foo 取得所有檔案,並依反向修改日期排序。由於使用的資源比較器(<reverse>
和 <date>
)位於內部 antlib 中,因此必須明確設定其命名空間。
包含巢狀資源集合中的前 count 個資源。這可搭配 sort 集合使用,例如從較大的集合中選取最舊、最大的等前幾個資源。
屬性 | 說明 | 必要 |
---|---|---|
count | 要包含的資源數量 | 否;預設 1 |
cache | 是否快取結果;停用可能會嚴重影響效能 | 否;預設為 true |
refid | 使這個 first 成為其他地方定義的 first 的 參考。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
需要單一資源集合。
自 Ant 1.7.1 起
包含巢狀資源集合中的最後 count 個資源。這可搭配 sort 集合使用,例如從較大的集合中選取最後幾個最舊、最大的等資源。
屬性 | 說明 | 必要 |
---|---|---|
count | 要包含的資源數量 | 否;預設 1 |
cache | 是否快取結果;停用可能會嚴重影響效能 | 否;預設為 true |
refid | 使這個 last 成為其他地方定義的 last 的 參考。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
需要單一資源集合。
自 Ant 1.9.5 起
包含巢狀資源集合中除了前 count 項資源以外的所有元素。這可與 sort 集合搭配使用,例如從較大的集合中選取除了前幾個最舊、最大的等資源以外的所有資源。
屬性 | 說明 | 必要 |
---|---|---|
count | 要排除的資源數量 | 否;預設 1 |
cache | 是否快取結果;停用可能會嚴重影響效能 | 否;預設為 true |
refid | 將此 allbutfirst 設為對在其他地方定義的 allbutfirst 的 參照。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
需要單一資源集合。
自 Ant 1.9.5 起
包含巢狀資源集合中除了最後 count 項資源以外的所有元素。這可與 sort 集合搭配使用,例如從較大的集合中選取除了最後幾個最舊、最大的等資源以外的所有資源。
屬性 | 說明 | 必要 |
---|---|---|
count | 要排除的資源數量 | 否;預設 1 |
cache | 是否快取結果;停用可能會嚴重影響效能 | 否;預設為 true |
refid | 將此 allbutlast 設為對在其他地方定義的 allbutlast 的 參照。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
需要單一資源集合。
包含從巢狀資源集合收集的 字串 權杖。使用 TokenFilter 支援的相同權杖分析器。運用此資源集合的想像力,可以實作等同於 Unix 函數 sort、grep -c、wc 和 wc -l 的等效函數。
屬性 | 說明 | 必要 |
---|---|---|
encoding | 巢狀資源的編碼 | 否;預設為預設 JVM 字元編碼 |
cache | 是否快取結果;停用可能會嚴重影響效能 | 否;預設為 true |
refid | 將此 tokens 設為對在其他地方定義的 tokens 的 參照。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
<concat> <union> <sort> <tokens> <resources refid="input"/> <linetokenizer includedelims="true"/> </tokens> </sort> </union> </concat>
對資源集合 input
實作 Unix sort -u。
下列資源集合實作集合運算
巢狀資源集合的聯集。
唯一支援的屬性是 refid
,它將此 union
設為對在其他地方定義的 union
的 參照。如果指定,則不允許其他屬性或巢狀元素。
巢狀資源集合的交集。
唯一支援的屬性是 refid
,它將此 intersect
設為對在其他地方定義的 intersect
的 參照。如果指定,則不允許其他屬性或巢狀元素。
巢狀資源集合的差集。
下列屬性適用於所有集合運算資源集合
屬性 | 說明 | 必要 |
---|---|---|
cache | 是否快取結果;停用可能會嚴重影響效能 | 否;預設為 true |
refid | 將此 difference 設為對在其他地方定義的 difference 的 參照。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
<resources id="A"> <string value="a"/> <string value="b"/> </resources> <resources id="B"> <string value="b"/> <string value="c"/> </resources> <union id="union"><resources refid="A"/><resources refid="B"/></union> <intersect id="intersect"><resources refid="A"/><resources refid="B"/></intersect> <difference id="difference"><resources refid="A"/><resources refid="B"/></difference> <echo> A: ${toString:A} = a;b B: ${toString:B} = b;c union : ${toString:union} = a;b;c intersect : ${toString:intersect} = b difference: ${toString:difference} = a;c </echo>
自 Ant 1.8.0 起
包裝另一個資源集合,並使用 對應器 對應巢狀資源的名稱。
即使 mappedresources 封裝了由檔案系統為基礎的資源集合,mappedresources 也不會顯示為檔案系統為基礎。這表示您無法將 mappedresources 與僅允許檔案系統為基礎資源的任務一起使用。
屬性 | 說明 | 必要 |
---|---|---|
cache | 是否快取結果;啟用可能會改善效能。自 Ant 1.8.1 起 | 否;預設為 false |
enablemultiplemappings | 如果為 true,集合將使用給定來源路徑的所有對應。如果為 false,它將只處理第一個資源。自 Ant 1.8.1 起 |
否;預設為 false |
refid | 使此 mappedresources 成為對在其他地方定義的 mappedresources 的 參考。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
需要單一資源集合。
可以使用單一 對應器 來對應名稱。如果未提供對應器(老實說,這沒有任何意義),則將使用身分對應器。
將所有檔案從給定的目錄複製到目標目錄,並將 .bak 新增為副檔名。請注意,也可以直接將 對應器
巢狀到 複製
中來完成此操作。
<copy todir="${target}"> <mappedresources> <fileset dir="${src}"/> <globmapper from="*" to="*.bak"/> </mappedresources> </copy>
建立 WAR 檔案,將所有檔案形式的 CLASSPATH
項目新增到 WEB-INF/lib 目錄,而不保留其檔案系統結構。
<war destfile="${output}"> <mappedresources> <restrict> <path path="${java.class.path}"/> <type type="file"/> </restrict> <chainedmapper> <flattenmapper/> <globmapper from="*" to="WEB-INF/lib/*"/> </chainedmapper> </mappedresources> </war>
自 Ant 1.8.0 起
此資源集合接受任意數量的巢狀資源,並假設所有這些資源都必須是 ZIP 或 TAR 檔案。<archives>
傳回的資源是巢狀檔案的內容。
此資源集合是 zipgroupfileset 的概化,而後者僅受 zip 系列任務支援。
唯一支援的屬性是 refid
,它使此 archives
成為對在其他地方定義的 archives
的 參考。如果指定,則不允許其他屬性或巢狀元素。
<archives>
有兩個巢狀元素 <zips>
和 <tars>
,它們本身是 聯集,即它們接受任意多個資源(集合)作為巢狀元素。
<zips>
的巢狀資源被視為 ZIP 檔案,<tars>
的巢狀資源被視為 TAR 檔案。
將所有 jar 中的所有檔案(這些 jar 位於類別路徑上)複製到 ${target}。
<copy todir="${target}"> <archives> <zips> <restrict> <path path="${java.class.path}"/> <name name="*.jar"/> </restrict> </zips> </archives> </copy>
自 Ant 1.8.0 起
此資源集合接受任意數量的巢狀資源,讀取這些資源並傳回每個讀取行的資源。
如果該行包含冒號,Ant 會嘗試將其用作 URL,如果失敗(或該行不包含冒號),則會傳回一個檔案資源,其名稱為該行的內容。
屬性會針對每一行展開。如果屬性展開產生資源物件,而不是字串(例如因為自訂屬性輔助程式),則會直接傳回資源。
<resourcelist>
是 <filelist>
的概化。
屬性 | 說明 | 必要 |
---|---|---|
encoding | 巢狀資源的編碼 | 否;預設為預設 JVM 字元編碼 |
basedir | 用於解析相對檔案名稱的基本目錄。也用於提供此資源集合建立的 FileResources 的基本目錄。自 Ant 1.10.4 起 | 否 |
preserveduplicates | 使這個 resourcelist 回傳所有資源,次數與它們被指定的次數相同。否則 resourcelist 只會回傳每個資源,順序為它們第一次出現的順序。自 Ant 1.10.10 起 |
否 |
refid | 使這個 resourcelist 成為對在其他地方定義的 resourcelist 的 參考。如果指定,則不允許其他屬性或巢狀元素。 |
否 |
<resourcelist>
接受任意多個資源 (集合) 作為巢狀元素。
此外,<resourcelist>
支援巢狀 <filterchain>
元素,可用於在展開其行之前,過濾/修改已讀取的資源。此類巢狀元素對應於 filterchain。
以下範例會從幾個備用 URL 中的第一個實際可存取的 URL 複製一個檔案。它假設檔案 mirrors.txt 如下所示
mirrors.txt: https://best.mirror.example.org/ http://second.best.mirror.example.org/mirror/of/best/ https://yet.another.mirror/ https://the.original.site/
<copy todir="${target}"> <first> <restrict> <resourcelist> <file file="mirrors.txt"/> </resourcelist> <exists/> </restrict> </first> </copy>