取得

說明

從 URL 取得檔案。當 verbose 選項為 on 時,此任務會為每取得 100 Kb 顯示一個 .。執行時期支援的任何 URL 架構都可以在此處使用,包括 http:https:ftp:jar:

使用 usetimestamp 選項可以控制下載,以便只有在遠端檔案比本機複本更新時才會擷取。如果沒有本機複本,則會一直進行下載。下載檔案時,會將已下載檔案的時間戳記設定為遠端時間戳記。注意:此時間戳記功能僅適用於使用 HTTP 協定的下載。

可以指定使用者名稱和密碼,在此情況下會使用基本(「經過輕微編碼的純文字」)驗證。這僅在 HTTPS 連結中安全。

代理自 Apache Ant 1.7.0 起,執行於 Java 5 或更新版本的 Ant 可以 使用作業系統的代理設定(如果已使用 -autoproxy 命令列選項啟用)。對於較早的 Java 版本,也有 <setproxy> 任務。開啟代理後,如果要求已轉發至代理,則針對本機主機的 <get> 要求可能無法如預期般運作。

參數

屬性 說明 必要
src 要從中擷取檔案的 URL。 是,或巢狀資源集合
dest 要儲存已擷取檔案的檔案或目錄。
verbose 顯示詳細的進度資訊(on|off)。 否;預設為 off
quiet 僅記錄錯誤。(true|false)。 否;預設為 false
ignoreerrors 記錄錯誤,但不要視為致命錯誤。 否;預設為 false
usetimestamp 根據本機複本的時間戳記有條件地下載檔案。僅限 HTTP 否;預設為 false
username 基本 HTTP 驗證的使用者名稱 是,如果設定 password
password 基本 HTTP 驗證的密碼 是,如果設定 username
authenticateOnRedirect 在追蹤重新導向時,是否也應該將憑證傳送至新位置。
自 Ant 1.10.13 起
否;預設為 false
maxtime 單一下載所花費的最大時間(以秒為單位),否則會中斷並視為下載錯誤。自 Ant 1.8.0 起 否;預設為 0,表示無限制
retries 開啟 URI 的嘗試次數。
屬性名稱有誤導性,因為 1 的值表示「錯誤時不重試」,而 0 的值表示甚至不嘗試連線到 URI。
自 Ant 1.8.0 起
否;預設為 3
skipexisting 略過已存在於本機檔案系統中的檔案
自 Ant 1.8.0 起
否;預設為 false
httpusecaches 僅限 HTTP—如果為 true,允許在 HttpUrlConnection 層級快取;如果為 false,關閉快取。
注意這只是一個提示,提供給底層的 UrlConnection 類別,實作和代理程式可以忽略此設定。
否;預設為 true
useragent 要傳送的 User-Agent HTTP 標頭。
自 Ant 1.9.3 起
否;預設為 Apache Ant VERSION
tryGzipEncoding 設定為 true 時,Ant 會告訴伺服器它願意接受 gzip 編碼,以減少傳輸的資料量並透明地解壓縮內容。
將此設定為 true 也表示 Ant 會自動解壓縮 .tar.gz 和類似的檔案。
自 Ant 1.9.5 起
否;預設為 false

設定為巢狀元素的參數

任何資源集合

資源集合用於選取要下載的 URL 群組。如果集合包含多個資源,則 dest 屬性必須指向目錄(如果目錄存在),否則將建立目錄。除非您也指定對應器,否則目標檔案名稱會使用來源 URL 路徑的最後一部分。

mapper

您可以使用巢狀 mapper 元素定義名稱轉換。您也可以使用任何 filenamemapper 類型來取代 mapper 元素。

對應器會收到資源的名稱作為引數。任何對應器未傳回已對應名稱或傳回多個已對應名稱的資源都會被略過。如果傳回的名稱是相對路徑,則會視為相對於 dest 屬性。

header

任何任意數量的 HTTP 標頭都可以加入請求中。
巢狀 <header/> 節點的屬性如下

屬性 說明 必要
name 此標頭的名稱或金鑰。不能為 null 或空白。會移除前導和尾隨空白
value 要指定給標頭的值。不能為 null 或空白。會移除前導和尾隨空白

範例

取得 https://ant.dev.org.tw/ 的首頁,並將其儲存在檔案 help/index.html 中。

<get src="https://ant.dev.org.tw/" dest="help/index.html"/>

如果本機副本遺失或過期,取得 Ant(目前和過去)發布管理員的 PGP 金鑰。使用 verbose 選項取得進度資訊。

<get src="https://www.apache.org/dist/ant/KEYS"
     dest="KEYS"
     verbose="true"
     usetimestamp="true"/>

從具有存取控制的伺服器擷取一些檔案。因為使用 HTTPS,所以如果忽略基本驗證會以純文字傳送密碼,這一點是無關緊要的,因為這是您的建置檔案的一部分,而第三方可能會讀取。如果您需要更高的安全性,請考慮使用 input 任務查詢密碼。

<get src="https://insecure-bank.org/statement/user=1214"
     dest="statement.html"
     username="1214"
     password="secret"/>

使用類似以下的巨集

<macrodef name="get-and-checksum">
  <attribute name="url"/>
  <attribute name="dest"/>
  <sequential>
    <local name="destdir"/>
    <dirname property="destdir" file="@{dest}"/>
    <get dest="${destdir}">
      <url url="@{url}"/>
      <url url="@{url}.sha1"/>
      <firstmatchmapper>
        <globmapper from="@{url}.sha1" to="@{dest}.sha"/>
        <globmapper from="@{url}" to="@{dest}"/>
      </firstmatchmapper>
    </get>
    <local name="checksum.matches"/>
    <local name="checksum.matches.fail"/>
    <checksum file="@{dest}" algorithm="sha" fileext=".sha"
              verifyproperty="checksum.matches"/>
    <condition property="checksum.matches.fail">
      <equals arg1="${checksum.matches}" arg2="false"/>
    </condition>
    <fail if="checksum.matches.fail">Checksum error</fail>
  </sequential>
</macrodef>

可以下載人工製品及其 SHA1 校驗碼(當然,假設校驗碼檔案有特定的命名慣例),並在執行中驗證校驗碼。

<get dest="downloads">
  <url url="https://ant.dev.org.tw/index.html"/>
  <url url="https://ant.dev.org.tw/faq.html"/>
</get>

使用自訂 HTTP 標頭

<get src="https://ant.dev.org.tw/index.html" dest="downloads">
  <header name="header1" value="headerValue1"/>
  <header name="header2" value="headerValue2"/>
  <header name="header3" value="headerValue3"/>
</get>

取得 https://ant.dev.org.tw/ 的首頁和 FAQ 頁面,並將其儲存在目錄 downloads 中,必要時會建立該目錄。