gpt4 book ai didi

java - 我可以使用 gradle 在谷歌云存储上部署文件吗?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:23:40 24 4
gpt4 key购买 nike

我在 Google App Engine 上运行一个应用程序,我的 git 存储库中有一些文件需要复制到云存储中以供应用程序访问。

我现在手动将它们复制到云存储中,但我很想找到一种方法,在我启动时将它们与应用程序一起自动部署

gradle appengineUpdate

甚至定义一个新的 gradle 任务

gradle storageUpdate

有人有同样的需求并找到了可行的方法吗?

最佳答案

经过多次尝试,我将发布我构建、测试、完善并在生产中使用的解决方案。

首先,我创建了一个新的 Java 类,它使用 Storage、ACL 和 BlobInfo 处理文件上传

Storage storage = StorageOptions.builder()
.authCredentials(AuthCredentials.createForJson(new FileInputStream(authFile)))
.projectId(projectId)
.build()
.service();

List<Acl> aclList = new ArrayList<>();
aclList.add(Acl.of(Acl.User.ofAllUsers(), Acl.Role.READER)); // shared publicly

BlobInfo blobInfo = BlobInfo.builder(blobId)
.acl(aclList)
.build();

storage.create(blobInfo, new FileInputStream(template));

之后我将它链接到一个调用该类的新 gradle 任务

dependencies {

// Google Cloud Java Client
compile group: "com.google.cloud", name: "gcloud-java", version: "0.2.6"

}

task upload(type:JavaExec) {
main = 'com.acme.GcsUploader'
classpath = sourceSets.main.runtimeClasspath

// Test Environment
args = [
'myProjectId', // project Id
'myBucketName', // bucket name

"file=${project.hasProperty("file") ? file : ""}"
]

}

请注意,如果我想上传单个文件,调用就足够了

gradle upload -Pfile=<filename>

默认情况下,我会上传所有文件,但如果我想指定单个文件,则可以轻松完成

最后但并非最不重要的一点是,要自动运行任务,根据新定义的上传任务声明一个已经运行的任务就足够了

tasks.getByName('processResources').dependsOn(upload)

关于java - 我可以使用 gradle 在谷歌云存储上部署文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33798079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com