Gradle从S3下载.zip文件:求标准插件或实现方法
在Gradle中从S3下载ZIP文件的替代方案
如果你找不到com.amazonaws.gradle.s3.Download对应的插件,可以用以下两种可靠方式实现需求:
1. 直接基于AWS SDK编写自定义任务
这种方式无需依赖特定Gradle插件,直接调用AWS S3 SDK完成下载,灵活性和稳定性更高。
步骤:
首先在构建脚本中添加AWS SDK依赖,然后实现下载逻辑:
buildscript { repositories { mavenCentral() } dependencies { // 引入AWS S3 SDK及区域管理依赖,可替换为最新版本 classpath 'software.amazon.awssdk:s3:2.20.157' classpath 'software.amazon.awssdk:regions:2.20.157' } } task downloadZipFromS3 { doLast { // 初始化S3客户端,替换为你的桶所在区域 def s3Client = software.amazon.awssdk.services.s3.S3Client.builder() .region(software.amazon.awssdk.regions.Region.US_EAST_1) .build() def bucketName = "${s3.bucket}" def objectKey = "${s3.key}" // 指定保存到项目目录下的目标文件 def localTargetFile = file("${projectDir}/your-local-file.zip") try { // 执行下载 s3Client.getObject( software.amazon.awssdk.services.s3.model.GetObjectRequest.builder() .bucket(bucketName) .key(objectKey) .build(), localTargetFile.toPath() ) println "ZIP文件已成功下载至: ${localTargetFile.absolutePath}" } finally { // 确保客户端关闭 s3Client.close() } } }
凭证配置
AWS SDK会自动从以下位置加载凭证,按需配置即可:
- 系统环境变量(
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY) - 用户主目录下的
~/.aws/credentials文件 - 运行环境的IAM角色(如果在EC2/EKS等AWS服务中运行)
2. 使用维护活跃的第三方Gradle插件
如果偏好插件方式,可以使用io.micronaut.aws插件(该插件基于AWS SDK v2,维护活跃):
配置插件及任务:
plugins { id 'io.micronaut.aws' version '4.3.0' } task downloadZipFromS3(type: io.micronaut.gradle.aws.s3.S3Download) { bucket = "${s3.bucket}" key = "${s3.key}" file = file("${projectDir}/your-local-file.zip") region = "us-east-1" // 替换为你的桶区域 }
注意事项
确保插件版本与你的Gradle版本兼容,可从插件仓库确认最新适配版本。
内容的提问来源于stack exchange,提问作者Swapnil Kotwal
相关产品推荐
相关产品推荐

