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

标签 java google-app-engine gradle google-cloud-storage

我在 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/

相关文章:

java - 我想确保我的Spring Boot服务器启动时MongoDB可用

gradle - Android Studio gradle断言错误

java - 如何在SWT中一次监听按键和鼠标事件(Shift+Left MouseUp)?

python - Django 不格式化 GAE 上的日期时间,所有内容都是 UTC

google-app-engine - 如何在 Google 应用引擎中的帖子中接收变量,其中包含带有 : õ á? 等字符的字符串

performance - 优化 app.yaml

android - Gradle不会将versionCode和VersionName更新为manifest.xml文件

java - 位是如何存储在内存中的? (在 block 中?可以将多个大小的位存储在一起吗?)

java - 无法加载 Skuli 库

java - (java)为什么冒泡排序不排序?