gradle-download-task完整指南:从基础用法到高级特性全解析

📅 2026/7/26 21:50:02 👁️ 阅读次数 📝 编程学习
gradle-download-task完整指南:从基础用法到高级特性全解析

gradle-download-task完整指南:从基础用法到高级特性全解析

【免费下载链接】gradle-download-task📥 Adds a download task to Gradle that displays progress information项目地址: https://gitcode.com/gh_mirrors/gr/gradle-download-task

gradle-download-task是一款为Gradle构建工具设计的下载任务插件,它能在下载文件时显示进度信息,支持并行下载多个文件,并且可以与其他任务并发执行。该插件已成功通过Gradle 5.0至9.3.1版本的测试,相信对更新的版本也能兼容。

快速上手:安装与基础配置

插件安装步骤

要使用gradle-download-task,首先需要在Gradle构建脚本中应用插件配置。在你的build.gradle文件中添加以下代码:

plugins { id "de.undercouch.download" version "5.7.0" }

简单下载任务示例

应用插件后,你可以像这样使用Download任务:

task downloadFile(type: Download) { src 'http://www.example.com/index.html' dest layout.buildDirectory }

默认情况下,即使目标文件已存在,插件也会执行下载。如果你想避免重复下载,可以使用overwrite标志:

task downloadFile(type: Download) { src 'http://www.example.com/index.html' dest layout.buildDirectory overwrite false }

在任务中嵌入下载操作

除了单独的Download任务,你还可以使用download扩展在构建脚本的任何地方检索文件:

task myTask { doLast { // 执行一些操作... // ...然后下载文件 download.run { src 'http://www.example.com/index.html' dest layout.buildDirectory overwrite false } // ...执行其他操作 } }

download扩展还提供了runAsync方法用于异步下载文件,它返回一个CompletableFuture对象。使用时请确保等待CompletableFuture的结果,否则错误可能会丢失。

核心功能与实用技巧

仅下载已修改的文件

如果服务器支持If-Modified-Since请求头并在响应中提供Last-Modified时间戳,你可以使用onlyIfModified标志仅下载服务器上已修改的文件:

task downloadFile(type: Download) { src 'http://www.example.com/index.html' dest layout.buildDirectory onlyIfModified true }

如果服务器支持实体标签(ETags),你可以将onlyIfModifieduseETag一起使用,以获得更可靠的文件修改检测。

并行下载多个文件

gradle-download-task支持并行下载多个文件到指定目录:

task downloadMultipleFiles(type: Download) { src([ 'http://www.example.com/index.html', 'http://www.example.com/test.html' ]) dest layout.buildDirectory }

注意:下载多个文件时,目标必须是目录,否则插件将失败。

下载并解压ZIP文件

你可以将download task插件与Gradle内置的ZIP文件支持结合使用,实现下载并解压ZIP文件:

task downloadZipFile(type: Download) { src 'https://github.com/michel-kraemer/gradle-download-task/archive/refs/tags/5.7.0.zip' dest layout.buildDirectory.file('5.7.0.zip') } task downloadAndUnzipFile(dependsOn: downloadZipFile, type: Copy) { from zipTree(downloadZipFile.dest) into layout.buildDirectory }

从目录列表下载所有文件

如果服务器提供简单的目录列表,你可以使用以下代码下载目录中的所有文件:

task downloadDirectory { doLast { def dir = 'http://central.maven.org/maven2/de/undercouch/gradle-download-task/1.0/' def urlLister = new org.apache.ivy.util.url.ApacheURLLister() def files = urlLister.listFiles(new URL(dir)) download.run { src files dest layout.buildDirectory } } }

更多使用示例可以在项目的examples目录中找到。

高级特性详解

下载任务属性配置

download task和扩展支持多种属性配置,让你可以精确控制下载行为:

常规配置
  • src:要下载的URL,可以是URL列表(必填)
  • dest:存储文件的目标文件或目录(必填)
  • quiet:是否不显示进度信息(默认:false)
  • overwrite:是否覆盖现有文件(默认:true)
  • onlyIfModified:是否仅在文件在服务器上被修改时才下载(默认:false)
  • eachFile:对每个源URL应用的操作(适用于多文件下载)
连接配置
  • acceptAnyCertificate:是否忽略HTTPS证书验证错误(默认:false)
  • compress:是否使用压缩(默认:true)
  • header/headers:设置请求头
  • connectTimeout:连接超时时间(默认:30秒)
  • readTimeout:读取数据超时时间(默认:30秒)
  • retries:请求失败后的最大重试次数(默认:0,不重试)
认证配置
  • username:服务器认证用户名
  • password:服务器认证密码
  • preemptiveAuth:是否启用 preemptive Basic 认证(默认:false)

文件校验功能

插件还提供了Verify任务,用于通过计算文件的校验和并与预定义值进行比较来检查下载文件的完整性。

task verifyFile(type: Verify) { src layout.buildDirectory.file('file.ext') algorithm 'MD5' checksum 'ce114e4501d2f4e2dcea3e17b546f339' }

你可以将下载任务和验证任务结合使用:

task downloadFile(type: Download) { src 'http://www.example.com/index.html' dest layout.buildDirectory } task verifyFile(type: Verify, dependsOn: downloadFile) { src layout.buildDirectory.file('index.html') algorithm 'MD5' checksum '09b9c392dc1f6e914cea287cb6be34b0' }

代理配置

你可以通过设置标准JVM系统属性来配置代理服务器。可以在构建脚本中直接设置,也可以在gradle.properties文件中配置:

systemProp.http.proxyHost=www.somehost.org systemProp.http.proxyPort=8080 systemProp.http.proxyUser=userid systemProp.http.proxyPassword=password systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost

HTTPS代理配置类似:

systemProp.https.proxyHost=www.somehost.org systemProp.https.proxyPort=8080 systemProp.https.proxyUser=userid systemProp.https.proxyPassword=password

最低要求与兼容性

使用gradle-download-task插件需要:

  • Gradle 5.x 或更高版本
  • Java 8 或更高版本

如果你需要在Gradle 2.x至4.x或Java 7上运行该插件,请使用gradle-download-task版本4.1.2。

总结

gradle-download-task是一个功能强大且灵活的Gradle插件,它为你的构建脚本提供了可靠的文件下载能力。无论是简单的单文件下载,还是复杂的多文件并行下载和验证,这款插件都能满足你的需求。通过本文介绍的基础用法和高级特性,你可以充分利用gradle-download-task来优化你的Gradle构建流程。

要开始使用gradle-download-task,只需克隆仓库:git clone https://gitcode.com/gh_mirrors/gr/gradle-download-task,然后按照本文的指南进行配置和使用。

【免费下载链接】gradle-download-task📥 Adds a download task to Gradle that displays progress information项目地址: https://gitcode.com/gh_mirrors/gr/gradle-download-task

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考