获取

描述

从 URL 获取文件。当 verbose 选项为 on 时,此任务会为每检索到的 100 Kb 显示一个 .。运行时支持的任何 URL 模式在此处均有效,包括 http:https:ftp:jar:

使用 usetimestamp 选项可以控制下载,以便仅在远程文件比本地副本更新时才获取远程文件。如果没有本地副本,则始终进行下载。下载文件时,下载文件的日期时间将设置为远程日期时间。注意:此日期时间功能仅适用于使用 HTTP 协议进行的下载。

可以指定用户名和密码,在这种情况下,将使用基本(“稍微编码的纯文本”)身份验证。这仅在 HTTPS 链接上安全。

代理从 Apache Ant 1.7.0 开始,在 Java 5 或更高版本上运行的 Ant 可以使用操作系统的代理设置(如果使用 -autoproxy 命令行选项启用)。对于早期版本的 Java,还有 <setproxy> 任务。如果启用了代理,则如果请求被转发到代理,则针对 localhost 的 <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.apache.org/ 的索引页面,并将其存储在文件 help/index.html 中。

<get src="https://ant.apache.org/" 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.apache.org/index.html"/>
  <url url="https://ant.apache.org/faq.html"/>
</get>

使用自定义 HTTP 标头

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

获取 https://ant.apache.org/ 的索引和常见问题解答页面,并将它们存储在目录 downloads 中(如果需要,将创建该目录)。