Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以使用gradle在google云存储上部署文件吗?_Java_Google App Engine_Gradle_Google Cloud Storage - Fatal编程技术网

Java 我可以使用gradle在google云存储上部署文件吗?

Java 我可以使用gradle在google云存储上部署文件吗?,java,google-app-engine,gradle,google-cloud-storage,Java,Google App Engine,Gradle,Google Cloud Storage,我正在Google App Engine上运行一个应用程序,我的git存储库中有一些文件需要复制到云存储中,以供应用程序访问 现在,我在云存储中手动复制它们,但我希望找到一种方法,在启动应用程序时将它们与应用程序一起自动部署 gradle appengineUpdate 甚至定义一个新的梯度任务 gradle storageUpdate 任何人都有同样的需求,并且找到了一种可行的方法吗?经过多次尝试,我将发布我构建、测试、完善并在生产中使用的解决方案 首先,我创建了一个新的Java类,它使用

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

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

gradle appengineUpdate
甚至定义一个新的梯度任务

gradle storageUpdate

任何人都有同样的需求,并且找到了一种可行的方法吗?

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

首先,我创建了一个新的Java类,它使用存储、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 upload -Pfile=<filename>

你可以创建一个这样的单元测试,让gradle在发布/打包时执行你的单元测试?这是一个好主意@konqi!我还没有任何gradle激活的单元测试,但我认为这样做会成功。你曾经用过类似的方法吗?我用过,但我用的是maven,所以我不会对gradle有太大的帮助(因此是一个评论,而不是一个答案)。定义一个单独的任务将是更好的解决方案,但也需要更多的努力-但是您可以使用单元测试定义一个任务,并将这两种方法结合起来…我的最终目标是让一些东西自动复制这些文件,然后忘记它。。。因此,我认为我将编写一个解决方案来实现这一点,而无需定义新任务。再次感谢!
gradle upload -Pfile=<filename>
tasks.getByName('processResources').dependsOn(upload)