From 26a66816586ad6777f1389ecdfb02e0780c43f63 Mon Sep 17 00:00:00 2001 From: Zacharya Haitin Date: Sat, 21 Nov 2020 12:18:50 +0200 Subject: [PATCH] Add google cloud storage support to java_export --- .gitignore | 3 +- README.md | 4 + .../tools/java/rules/jvm/external/maven/BUILD | 10 + .../jvm/external/maven/MavenPublisher.java | 43 +- repositories.bzl | 1 + rules_jvm_external_deps_install.json | 623 +++++++++++++++++- 6 files changed, 679 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index bd6dbb2d4..be804af5d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /*.class bazel-* .ijwb -.DS_Store \ No newline at end of file +.DS_Store +.idea diff --git a/README.md b/README.md index 01f9e4b13..45525431f 100644 --- a/README.md +++ b/README.md @@ -977,6 +977,10 @@ bazel run --stamp \ //user_project:exported_lib.publish` ``` +It's also possible to publish to a Google Cloud Storage bucket: + +`bazel run --define "maven_repo=gs://example-bucket/repository" //user_project:exported_lib.publish` + When using the `gpg_sign` option, the current default key will be used for signing, and the `gpg` binary needs to be installed on the machine. diff --git a/private/tools/java/rules/jvm/external/maven/BUILD b/private/tools/java/rules/jvm/external/maven/BUILD index f0da24743..f4dd35d8e 100644 --- a/private/tools/java/rules/jvm/external/maven/BUILD +++ b/private/tools/java/rules/jvm/external/maven/BUILD @@ -1,3 +1,5 @@ +load("@rules_jvm_external//:defs.bzl", "artifact") + java_binary( name = "MavenPublisher", srcs = ["MavenPublisher.java"], @@ -11,6 +13,14 @@ java_binary( visibility = ["//visibility:public"], deps = [ "//private/tools/java/rules/jvm/external:byte-streams", + artifact( + "com.google.cloud:google-cloud-storage", + repository_name = "rules_jvm_external_deps", + ), + artifact( + "com.google.cloud:google-cloud-core", + repository_name = "rules_jvm_external_deps", + ), ], ) diff --git a/private/tools/java/rules/jvm/external/maven/MavenPublisher.java b/private/tools/java/rules/jvm/external/maven/MavenPublisher.java index 08f37c8a7..0bbd87cdb 100644 --- a/private/tools/java/rules/jvm/external/maven/MavenPublisher.java +++ b/private/tools/java/rules/jvm/external/maven/MavenPublisher.java @@ -17,6 +17,10 @@ package rules.jvm.external.maven; +import com.google.cloud.WriteChannel; +import com.google.cloud.storage.BlobInfo; +import com.google.cloud.storage.Storage; +import com.google.cloud.storage.StorageOptions; import rules.jvm.external.ByteStreams; import java.io.IOException; @@ -24,7 +28,9 @@ import java.io.OutputStream; import java.math.BigInteger; import java.net.HttpURLConnection; +import java.net.URI; import java.net.URL; +import java.nio.channels.Channels; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -50,11 +56,13 @@ public class MavenPublisher { private static final Logger LOG = Logger.getLogger(MavenPublisher.class.getName()); private static final ExecutorService EXECUTOR = Executors.newFixedThreadPool(1); + private static final String[] SUPPORTED_SCHEMES = {"file:/", "https://", "gs://"}; public static void main(String[] args) throws IOException, InterruptedException, ExecutionException, TimeoutException { String repo = args[0]; - if (!(repo.startsWith("file:/") || repo.startsWith("https://"))) { - throw new IllegalArgumentException("Repository must be accessed via file or https: " + repo); + if (!isSchemeSupported(repo)) { + throw new IllegalArgumentException("Repository must be accessed via the supported schemes: " + + Arrays.toString(SUPPORTED_SCHEMES)); } Credentials credentials = new Credentials(args[2], args[3], Boolean.parseBoolean(args[1])); @@ -85,6 +93,15 @@ public static void main(String[] args) throws IOException, InterruptedException, } } + private static boolean isSchemeSupported(String repo) { + for (String scheme : SUPPORTED_SCHEMES) { + if (repo.startsWith(scheme)) { + return true; + } + } + return false; + } + private static CompletableFuture upload( String repo, Credentials credentials, @@ -94,7 +111,7 @@ private static CompletableFuture upload( String base = String.format( "%s/%s/%s/%s/%s-%s", - repo, + repo.replaceAll("/$", ""), coords.groupId.replace('.', '/'), coords.artifactId, coords.version, @@ -144,6 +161,8 @@ private static CompletableFuture upload(String targetUrl, Credentials cred Callable callable; if (targetUrl.startsWith("http://") || targetUrl.startsWith("https://")) { callable = httpUpload(targetUrl, credentials, toUpload); + } else if (targetUrl.startsWith("gs://")) { + callable = gcsUpload(targetUrl, toUpload); } else { callable = writeFile(targetUrl, toUpload); } @@ -210,6 +229,24 @@ private static Callable writeFile(String targetUrl, Path toUpload) { }; } + private static Callable gcsUpload(String targetUrl, Path toUpload) { + return () -> { + Storage storage = StorageOptions.getDefaultInstance().getService(); + URI gsUri = new URI(targetUrl); + String bucketName = gsUri.getHost(); + String path = gsUri.getPath().substring(1); + + LOG.info(String.format("Copying %s to gs://%s/%s", toUpload, bucketName, path)); + BlobInfo blobInfo = BlobInfo.newBuilder(bucketName, path).build(); + try (WriteChannel writer = storage.writer(blobInfo); + InputStream is = Files.newInputStream(toUpload)) { + ByteStreams.copy(is, Channels.newOutputStream(writer)); + } + + return null; + }; + } + private static Path sign(Path toSign) throws IOException, InterruptedException { LOG.info("Signing " + toSign); diff --git a/repositories.bzl b/repositories.bzl index b03bbd347..b2c09fa5e 100644 --- a/repositories.bzl +++ b/repositories.bzl @@ -10,6 +10,7 @@ def rules_jvm_external_deps(repositories = _DEFAULT_REPOSITORIES): maven_install( name = "rules_jvm_external_deps", artifacts = [ + "com.google.cloud:google-cloud-storage:1.113.4", ], maven_install_json = "@rules_jvm_external//:rules_jvm_external_deps_install.json", repositories = repositories, diff --git a/rules_jvm_external_deps_install.json b/rules_jvm_external_deps_install.json index 642d3e115..c840bed33 100644 --- a/rules_jvm_external_deps_install.json +++ b/rules_jvm_external_deps_install.json @@ -1,8 +1,629 @@ { "dependency_tree": { - "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": 2914, + "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": 877247292, "conflict_resolution": {}, "dependencies": [ + { + "coord": "com.fasterxml.jackson.core:jackson-core:2.11.3", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3.jar", + "https://jcenter.bintray.com/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3.jar", + "https://maven.google.com/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3.jar" + ], + "sha256": "78cd0a6b936232e06dd3e38da8a0345348a09cd1ff9c4d844c6ee72c75cfc402", + "url": "https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3.jar" + }, + { + "coord": "com.google.api-client:google-api-client:1.30.11", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.oauth-client:google-oauth-client", + "com.google.http-client:google-http-client-jackson2", + "commons-codec:commons-codec", + "com.google.guava:guava" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/api-client/google-api-client/1.30.11/google-api-client-1.30.11.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/api-client/google-api-client/1.30.11/google-api-client-1.30.11.jar", + "https://jcenter.bintray.com/com/google/api-client/google-api-client/1.30.11/google-api-client-1.30.11.jar", + "https://maven.google.com/com/google/api-client/google-api-client/1.30.11/google-api-client-1.30.11.jar" + ], + "sha256": "ee6f97865cc7de6c7c80955c3f37372cf3887bd75e4fc06f1058a6b4cd9bf4da", + "url": "https://repo1.maven.org/maven2/com/google/api-client/google-api-client/1.30.11/google-api-client-1.30.11.jar" + }, + { + "coord": "com.google.api.grpc:proto-google-common-protos:2.0.1", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.protobuf:protobuf-java" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/api/grpc/proto-google-common-protos/2.0.1/proto-google-common-protos-2.0.1.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/api/grpc/proto-google-common-protos/2.0.1/proto-google-common-protos-2.0.1.jar", + "https://jcenter.bintray.com/com/google/api/grpc/proto-google-common-protos/2.0.1/proto-google-common-protos-2.0.1.jar", + "https://maven.google.com/com/google/api/grpc/proto-google-common-protos/2.0.1/proto-google-common-protos-2.0.1.jar" + ], + "sha256": "5ce71656118618731e34a5d4c61aa3a031be23446dc7de8b5a5e77b66ebcd6ef", + "url": "https://repo1.maven.org/maven2/com/google/api/grpc/proto-google-common-protos/2.0.1/proto-google-common-protos-2.0.1.jar" + }, + { + "coord": "com.google.api.grpc:proto-google-iam-v1:1.0.3", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.protobuf:protobuf-java", + "com.google.api.grpc:proto-google-common-protos" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/api/grpc/proto-google-iam-v1/1.0.3/proto-google-iam-v1-1.0.3.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/api/grpc/proto-google-iam-v1/1.0.3/proto-google-iam-v1-1.0.3.jar", + "https://jcenter.bintray.com/com/google/api/grpc/proto-google-iam-v1/1.0.3/proto-google-iam-v1-1.0.3.jar", + "https://maven.google.com/com/google/api/grpc/proto-google-iam-v1/1.0.3/proto-google-iam-v1-1.0.3.jar" + ], + "sha256": "64cee7383a97e846da8d8e160e6c8fe30561e507260552c59e6ccfc81301fdc8", + "url": "https://repo1.maven.org/maven2/com/google/api/grpc/proto-google-iam-v1/1.0.3/proto-google-iam-v1-1.0.3.jar" + }, + { + "coord": "com.google.api:api-common:1.10.1", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.guava:guava", + "com.google.code.findbugs:jsr305", + "javax.annotation:javax.annotation-api", + "com.google.auto.value:auto-value-annotations" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/api/api-common/1.10.1/api-common-1.10.1.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/api/api-common/1.10.1/api-common-1.10.1.jar", + "https://jcenter.bintray.com/com/google/api/api-common/1.10.1/api-common-1.10.1.jar", + "https://maven.google.com/com/google/api/api-common/1.10.1/api-common-1.10.1.jar" + ], + "sha256": "2a033f24bb620383eda440ad307cb8077cfec1c7eadc684d65216123a1b9613a", + "url": "https://repo1.maven.org/maven2/com/google/api/api-common/1.10.1/api-common-1.10.1.jar" + }, + { + "coord": "com.google.api:gax-httpjson:0.77.0", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.guava:guava", + "com.google.code.findbugs:jsr305", + "org.threeten:threetenbp", + "com.google.api:gax", + "com.google.auth:google-auth-library-oauth2-http", + "com.google.protobuf:protobuf-java-util", + "com.google.protobuf:protobuf-java", + "com.google.api:api-common", + "com.google.code.gson:gson", + "com.google.auth:google-auth-library-credentials", + "com.google.http-client:google-http-client" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/api/gax-httpjson/0.77.0/gax-httpjson-0.77.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/api/gax-httpjson/0.77.0/gax-httpjson-0.77.0.jar", + "https://jcenter.bintray.com/com/google/api/gax-httpjson/0.77.0/gax-httpjson-0.77.0.jar", + "https://maven.google.com/com/google/api/gax-httpjson/0.77.0/gax-httpjson-0.77.0.jar" + ], + "sha256": "fd4dae47fa016d3b26e8d90b67ddc6c23c4c06e8bcdf085c70310ab7ef324bd6", + "url": "https://repo1.maven.org/maven2/com/google/api/gax-httpjson/0.77.0/gax-httpjson-0.77.0.jar" + }, + { + "coord": "com.google.api:gax:1.60.0", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.guava:guava", + "io.opencensus:opencensus-api", + "com.google.code.findbugs:jsr305", + "org.threeten:threetenbp", + "com.google.auth:google-auth-library-oauth2-http", + "com.google.api:api-common" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/api/gax/1.60.0/gax-1.60.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/api/gax/1.60.0/gax-1.60.0.jar", + "https://jcenter.bintray.com/com/google/api/gax/1.60.0/gax-1.60.0.jar", + "https://maven.google.com/com/google/api/gax/1.60.0/gax-1.60.0.jar" + ], + "sha256": "02f37d4ff1a7b8d71dff8064cf9568aa4f4b61bcc4485085d16130f32afa5a79", + "url": "https://repo1.maven.org/maven2/com/google/api/gax/1.60.0/gax-1.60.0.jar" + }, + { + "coord": "com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.api-client:google-api-client" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/apis/google-api-services-storage/v1-rev20200927-1.30.10/google-api-services-storage-v1-rev20200927-1.30.10.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/apis/google-api-services-storage/v1-rev20200927-1.30.10/google-api-services-storage-v1-rev20200927-1.30.10.jar", + "https://jcenter.bintray.com/com/google/apis/google-api-services-storage/v1-rev20200927-1.30.10/google-api-services-storage-v1-rev20200927-1.30.10.jar", + "https://maven.google.com/com/google/apis/google-api-services-storage/v1-rev20200927-1.30.10/google-api-services-storage-v1-rev20200927-1.30.10.jar" + ], + "sha256": "52d26a9d105f8d8a0850807285f307a76cea8f3e0cdb2be4d3b15b1adfa77351", + "url": "https://repo1.maven.org/maven2/com/google/apis/google-api-services-storage/v1-rev20200927-1.30.10/google-api-services-storage-v1-rev20200927-1.30.10.jar" + }, + { + "coord": "com.google.auth:google-auth-library-credentials:0.22.0", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/com/google/auth/google-auth-library-credentials/0.22.0/google-auth-library-credentials-0.22.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/auth/google-auth-library-credentials/0.22.0/google-auth-library-credentials-0.22.0.jar", + "https://jcenter.bintray.com/com/google/auth/google-auth-library-credentials/0.22.0/google-auth-library-credentials-0.22.0.jar", + "https://maven.google.com/com/google/auth/google-auth-library-credentials/0.22.0/google-auth-library-credentials-0.22.0.jar" + ], + "sha256": "42c76031276de5b520909e9faf88c5b3c9a722d69ee9cfdafedb1c52c355dfc5", + "url": "https://repo1.maven.org/maven2/com/google/auth/google-auth-library-credentials/0.22.0/google-auth-library-credentials-0.22.0.jar" + }, + { + "coord": "com.google.auth:google-auth-library-oauth2-http:0.22.0", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.guava:guava", + "com.google.code.findbugs:jsr305", + "com.google.auto.value:auto-value-annotations", + "com.google.http-client:google-http-client-jackson2", + "com.google.auth:google-auth-library-credentials", + "com.google.http-client:google-http-client" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/auth/google-auth-library-oauth2-http/0.22.0/google-auth-library-oauth2-http-0.22.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/auth/google-auth-library-oauth2-http/0.22.0/google-auth-library-oauth2-http-0.22.0.jar", + "https://jcenter.bintray.com/com/google/auth/google-auth-library-oauth2-http/0.22.0/google-auth-library-oauth2-http-0.22.0.jar", + "https://maven.google.com/com/google/auth/google-auth-library-oauth2-http/0.22.0/google-auth-library-oauth2-http-0.22.0.jar" + ], + "sha256": "1722d895c42dc42ea1d1f392ddbec1fbb28f7a979022c3a6c29acc39cc777ad1", + "url": "https://repo1.maven.org/maven2/com/google/auth/google-auth-library-oauth2-http/0.22.0/google-auth-library-oauth2-http-0.22.0.jar" + }, + { + "coord": "com.google.auto.value:auto-value-annotations:1.7.4", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.7.4/auto-value-annotations-1.7.4.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.7.4/auto-value-annotations-1.7.4.jar", + "https://jcenter.bintray.com/com/google/auto/value/auto-value-annotations/1.7.4/auto-value-annotations-1.7.4.jar", + "https://maven.google.com/com/google/auto/value/auto-value-annotations/1.7.4/auto-value-annotations-1.7.4.jar" + ], + "sha256": "fedd59b0b4986c342f6ab2d182f2a4ee9fceb2c7e2d5bdc4dc764c92394a23d3", + "url": "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.7.4/auto-value-annotations-1.7.4.jar" + }, + { + "coord": "com.google.cloud:google-cloud-core-http:1.93.10", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.guava:guava", + "io.opencensus:opencensus-api", + "com.google.cloud:google-cloud-core", + "com.google.code.findbugs:jsr305", + "com.google.api:gax", + "com.google.auth:google-auth-library-oauth2-http", + "com.google.http-client:google-http-client-appengine", + "com.google.api-client:google-api-client", + "com.google.api:api-common", + "com.google.api:gax-httpjson", + "com.google.auth:google-auth-library-credentials", + "io.opencensus:opencensus-contrib-http-util", + "com.google.http-client:google-http-client" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/cloud/google-cloud-core-http/1.93.10/google-cloud-core-http-1.93.10.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/cloud/google-cloud-core-http/1.93.10/google-cloud-core-http-1.93.10.jar", + "https://jcenter.bintray.com/com/google/cloud/google-cloud-core-http/1.93.10/google-cloud-core-http-1.93.10.jar", + "https://maven.google.com/com/google/cloud/google-cloud-core-http/1.93.10/google-cloud-core-http-1.93.10.jar" + ], + "sha256": "81ac67c14c7c4244d2b7db2607ad352416aca8d3bb2adf338964e8fea25b1b3c", + "url": "https://repo1.maven.org/maven2/com/google/cloud/google-cloud-core-http/1.93.10/google-cloud-core-http-1.93.10.jar" + }, + { + "coord": "com.google.cloud:google-cloud-core:1.93.10", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.guava:guava", + "com.google.api.grpc:proto-google-iam-v1", + "com.google.code.findbugs:jsr305", + "org.threeten:threetenbp", + "com.google.api:gax", + "com.google.auto.value:auto-value-annotations", + "com.google.auth:google-auth-library-oauth2-http", + "com.google.protobuf:protobuf-java-util", + "com.google.protobuf:protobuf-java", + "com.google.api:api-common", + "com.google.http-client:google-http-client-jackson2", + "com.google.auth:google-auth-library-credentials", + "com.google.api.grpc:proto-google-common-protos", + "com.google.http-client:google-http-client" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/cloud/google-cloud-core/1.93.10/google-cloud-core-1.93.10.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/cloud/google-cloud-core/1.93.10/google-cloud-core-1.93.10.jar", + "https://jcenter.bintray.com/com/google/cloud/google-cloud-core/1.93.10/google-cloud-core-1.93.10.jar", + "https://maven.google.com/com/google/cloud/google-cloud-core/1.93.10/google-cloud-core-1.93.10.jar" + ], + "sha256": "832d74eca66f4601e162a8460d6f59f50d1d23f93c18b02654423b6b0d67c6ea", + "url": "https://repo1.maven.org/maven2/com/google/cloud/google-cloud-core/1.93.10/google-cloud-core-1.93.10.jar" + }, + { + "coord": "com.google.cloud:google-cloud-storage:1.113.4", + "dependencies": [ + "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", + "com.google.http-client:google-http-client:1.38.0", + "com.google.j2objc:j2objc-annotations:1.3", + "io.opencensus:opencensus-contrib-http-util:0.24.0", + "com.google.code.findbugs:jsr305:3.0.2", + "com.google.auth:google-auth-library-oauth2-http:0.22.0", + "com.google.api:api-common:1.10.1", + "com.google.cloud:google-cloud-core:1.93.10", + "com.google.guava:guava:30.0-android", + "io.opencensus:opencensus-api:0.24.0", + "com.google.api.grpc:proto-google-iam-v1:1.0.3", + "com.google.code.gson:gson:2.8.6", + "org.threeten:threetenbp:1.5.0", + "com.google.api-client:google-api-client:1.30.11", + "com.google.oauth-client:google-oauth-client:1.31.1", + "com.google.auto.value:auto-value-annotations:1.7.4", + "com.google.cloud:google-cloud-core-http:1.93.10", + "com.google.http-client:google-http-client-jackson2:1.38.0", + "com.google.api:gax:1.60.0", + "com.google.protobuf:protobuf-java-util:3.13.0", + "javax.annotation:javax.annotation-api:1.3.2", + "com.google.guava:failureaccess:1.0.1", + "com.google.auth:google-auth-library-credentials:0.22.0", + "com.google.protobuf:protobuf-java:3.13.0", + "io.grpc:grpc-context:1.33.1", + "com.google.api.grpc:proto-google-common-protos:2.0.1", + "com.google.http-client:google-http-client-appengine:1.38.0", + "com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10", + "com.google.errorprone:error_prone_annotations:2.4.0", + "com.google.api:gax-httpjson:0.77.0", + "com.fasterxml.jackson.core:jackson-core:2.11.3", + "org.checkerframework:checker-compat-qual:2.5.5" + ], + "directDependencies": [ + "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", + "com.google.http-client:google-http-client:1.38.0", + "com.google.j2objc:j2objc-annotations:1.3", + "io.opencensus:opencensus-contrib-http-util:0.24.0", + "com.google.code.findbugs:jsr305:3.0.2", + "com.google.auth:google-auth-library-oauth2-http:0.22.0", + "com.google.api:api-common:1.10.1", + "com.google.cloud:google-cloud-core:1.93.10", + "com.google.guava:guava:30.0-android", + "io.opencensus:opencensus-api:0.24.0", + "com.google.api.grpc:proto-google-iam-v1:1.0.3", + "com.google.code.gson:gson:2.8.6", + "org.threeten:threetenbp:1.5.0", + "com.google.api-client:google-api-client:1.30.11", + "com.google.oauth-client:google-oauth-client:1.31.1", + "com.google.auto.value:auto-value-annotations:1.7.4", + "com.google.cloud:google-cloud-core-http:1.93.10", + "com.google.http-client:google-http-client-jackson2:1.38.0", + "com.google.api:gax:1.60.0", + "com.google.protobuf:protobuf-java-util:3.13.0", + "javax.annotation:javax.annotation-api:1.3.2", + "com.google.guava:failureaccess:1.0.1", + "com.google.auth:google-auth-library-credentials:0.22.0", + "com.google.protobuf:protobuf-java:3.13.0", + "io.grpc:grpc-context:1.33.1", + "com.google.api.grpc:proto-google-common-protos:2.0.1", + "com.google.http-client:google-http-client-appengine:1.38.0", + "com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10", + "com.google.errorprone:error_prone_annotations:2.4.0", + "com.google.api:gax-httpjson:0.77.0", + "com.fasterxml.jackson.core:jackson-core:2.11.3", + "org.checkerframework:checker-compat-qual:2.5.5" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/cloud/google-cloud-storage/1.113.4/google-cloud-storage-1.113.4.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/cloud/google-cloud-storage/1.113.4/google-cloud-storage-1.113.4.jar", + "https://jcenter.bintray.com/com/google/cloud/google-cloud-storage/1.113.4/google-cloud-storage-1.113.4.jar", + "https://maven.google.com/com/google/cloud/google-cloud-storage/1.113.4/google-cloud-storage-1.113.4.jar" + ], + "sha256": "796833e9bdab80c40bbc820e65087eb8f28c6bfbca194d2e3e00d98cb5bc55d6", + "url": "https://repo1.maven.org/maven2/com/google/cloud/google-cloud-storage/1.113.4/google-cloud-storage-1.113.4.jar" + }, + { + "coord": "com.google.code.findbugs:jsr305:3.0.2", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", + "https://jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", + "https://maven.google.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" + ], + "sha256": "766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7", + "url": "https://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" + }, + { + "coord": "com.google.code.gson:gson:2.8.6", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/jcenter.bintray.com/com/google/code/gson/gson/2.8.6/gson-2.8.6.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/code/gson/gson/2.8.6/gson-2.8.6.jar", + "https://jcenter.bintray.com/com/google/code/gson/gson/2.8.6/gson-2.8.6.jar", + "https://maven.google.com/com/google/code/gson/gson/2.8.6/gson-2.8.6.jar" + ], + "sha256": "c8fb4839054d280b3033f800d1f5a97de2f028eb8ba2eb458ad287e536f3f25f", + "url": "https://jcenter.bintray.com/com/google/code/gson/gson/2.8.6/gson-2.8.6.jar" + }, + { + "coord": "com.google.errorprone:error_prone_annotations:2.4.0", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.4.0/error_prone_annotations-2.4.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.4.0/error_prone_annotations-2.4.0.jar", + "https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2.4.0/error_prone_annotations-2.4.0.jar", + "https://maven.google.com/com/google/errorprone/error_prone_annotations/2.4.0/error_prone_annotations-2.4.0.jar" + ], + "sha256": "5f2a0648230a662e8be049df308d583d7369f13af683e44ddf5829b6d741a228", + "url": "https://repo1.maven.org/maven2/com/google/errorprone/error_prone_annotations/2.4.0/error_prone_annotations-2.4.0.jar" + }, + { + "coord": "com.google.guava:failureaccess:1.0.1", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar", + "https://jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar", + "https://maven.google.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" + ], + "sha256": "a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26", + "url": "https://jcenter.bintray.com/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" + }, + { + "coord": "com.google.guava:guava:30.0-android", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "jdk:srczip", + "com.google.code.findbugs:jsr305", + "com.google.guava:failureaccess", + "com.google.guava:listenablefuture", + "com.google.j2objc:j2objc-annotations", + "com.google.errorprone:error_prone_annotations", + "org.checkerframework:checker-compat-qual" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/guava/guava/30.0-android/guava-30.0-android.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/guava/guava/30.0-android/guava-30.0-android.jar", + "https://jcenter.bintray.com/com/google/guava/guava/30.0-android/guava-30.0-android.jar", + "https://maven.google.com/com/google/guava/guava/30.0-android/guava-30.0-android.jar" + ], + "sha256": "3345c82c2cc70a0053e8db9031edc6d71625ef0dea6a2c8f5ebd6cb76d2bf843", + "url": "https://repo1.maven.org/maven2/com/google/guava/guava/30.0-android/guava-30.0-android.jar" + }, + { + "coord": "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/jcenter.bintray.com/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar", + "https://jcenter.bintray.com/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar", + "https://maven.google.com/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" + ], + "sha256": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99", + "url": "https://jcenter.bintray.com/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" + }, + { + "coord": "com.google.http-client:google-http-client-appengine:1.38.0", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.http-client:google-http-client", + "com.google.appengine:appengine-api-1.0-sdk" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/http-client/google-http-client-appengine/1.38.0/google-http-client-appengine-1.38.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/http-client/google-http-client-appengine/1.38.0/google-http-client-appengine-1.38.0.jar", + "https://jcenter.bintray.com/com/google/http-client/google-http-client-appengine/1.38.0/google-http-client-appengine-1.38.0.jar", + "https://maven.google.com/com/google/http-client/google-http-client-appengine/1.38.0/google-http-client-appengine-1.38.0.jar" + ], + "sha256": "f97b495fd97ac3a3d59099eb2b55025f4948230da15a076f189b9cff37c6b4d2", + "url": "https://repo1.maven.org/maven2/com/google/http-client/google-http-client-appengine/1.38.0/google-http-client-appengine-1.38.0.jar" + }, + { + "coord": "com.google.http-client:google-http-client-jackson2:1.38.0", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.http-client:google-http-client", + "com.fasterxml.jackson.core:jackson-core" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/http-client/google-http-client-jackson2/1.38.0/google-http-client-jackson2-1.38.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/http-client/google-http-client-jackson2/1.38.0/google-http-client-jackson2-1.38.0.jar", + "https://jcenter.bintray.com/com/google/http-client/google-http-client-jackson2/1.38.0/google-http-client-jackson2-1.38.0.jar", + "https://maven.google.com/com/google/http-client/google-http-client-jackson2/1.38.0/google-http-client-jackson2-1.38.0.jar" + ], + "sha256": "e6504a82425fcc2168a4ca4175138ddcc085168daed8cdedb86d8f6fdc296e1e", + "url": "https://repo1.maven.org/maven2/com/google/http-client/google-http-client-jackson2/1.38.0/google-http-client-jackson2-1.38.0.jar" + }, + { + "coord": "com.google.http-client:google-http-client:1.38.0", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.guava:guava", + "io.opencensus:opencensus-api", + "com.google.code.findbugs:jsr305", + "org.apache.httpcomponents:httpcore", + "com.google.j2objc:j2objc-annotations", + "io.opencensus:opencensus-contrib-http-util", + "org.apache.httpcomponents:httpclient" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/http-client/google-http-client/1.38.0/google-http-client-1.38.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/http-client/google-http-client/1.38.0/google-http-client-1.38.0.jar", + "https://jcenter.bintray.com/com/google/http-client/google-http-client/1.38.0/google-http-client-1.38.0.jar", + "https://maven.google.com/com/google/http-client/google-http-client/1.38.0/google-http-client-1.38.0.jar" + ], + "sha256": "411f4a42519b6b78bdc0fcfdf74c9edcef0ee97afa4a667abe04045a508d6302", + "url": "https://repo1.maven.org/maven2/com/google/http-client/google-http-client/1.38.0/google-http-client-1.38.0.jar" + }, + { + "coord": "com.google.j2objc:j2objc-annotations:1.3", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar", + "https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar", + "https://maven.google.com/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" + ], + "sha256": "21af30c92267bd6122c0e0b4d20cccb6641a37eaf956c6540ec471d584e64a7b", + "url": "https://repo1.maven.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" + }, + { + "coord": "com.google.oauth-client:google-oauth-client:1.31.1", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.http-client:google-http-client", + "com.google.code.findbugs:jsr305", + "com.google.guava:guava" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/oauth-client/google-oauth-client/1.31.1/google-oauth-client-1.31.1.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/oauth-client/google-oauth-client/1.31.1/google-oauth-client-1.31.1.jar", + "https://jcenter.bintray.com/com/google/oauth-client/google-oauth-client/1.31.1/google-oauth-client-1.31.1.jar", + "https://maven.google.com/com/google/oauth-client/google-oauth-client/1.31.1/google-oauth-client-1.31.1.jar" + ], + "sha256": "4ed4e2948251dbda66ce251bd7f3b32cd8570055e5cdb165a3c7aea8f43da0ff", + "url": "https://repo1.maven.org/maven2/com/google/oauth-client/google-oauth-client/1.31.1/google-oauth-client-1.31.1.jar" + }, + { + "coord": "com.google.protobuf:protobuf-java-util:3.13.0", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "com.google.protobuf:protobuf-java", + "com.google.guava:guava", + "com.google.errorprone:error_prone_annotations", + "com.google.code.gson:gson" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/protobuf/protobuf-java-util/3.13.0/protobuf-java-util-3.13.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java-util/3.13.0/protobuf-java-util-3.13.0.jar", + "https://jcenter.bintray.com/com/google/protobuf/protobuf-java-util/3.13.0/protobuf-java-util-3.13.0.jar", + "https://maven.google.com/com/google/protobuf/protobuf-java-util/3.13.0/protobuf-java-util-3.13.0.jar" + ], + "sha256": "d9de66b8c9445905dfa7064f6d5213d47ce88a20d34e21d83c4a94a229e14e62", + "url": "https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java-util/3.13.0/protobuf-java-util-3.13.0.jar" + }, + { + "coord": "com.google.protobuf:protobuf-java:3.13.0", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/com/google/protobuf/protobuf-java/3.13.0/protobuf-java-3.13.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java/3.13.0/protobuf-java-3.13.0.jar", + "https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.13.0/protobuf-java-3.13.0.jar", + "https://maven.google.com/com/google/protobuf/protobuf-java/3.13.0/protobuf-java-3.13.0.jar" + ], + "sha256": "97d5b2758408690c0dc276238707492a0b6a4d71206311b6c442cdc26c5973ff", + "url": "https://repo1.maven.org/maven2/com/google/protobuf/protobuf-java/3.13.0/protobuf-java-3.13.0.jar" + }, + { + "coord": "io.grpc:grpc-context:1.33.1", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/io/grpc/grpc-context/1.33.1/grpc-context-1.33.1.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/io/grpc/grpc-context/1.33.1/grpc-context-1.33.1.jar", + "https://jcenter.bintray.com/io/grpc/grpc-context/1.33.1/grpc-context-1.33.1.jar", + "https://maven.google.com/io/grpc/grpc-context/1.33.1/grpc-context-1.33.1.jar" + ], + "sha256": "99b8aea2b614fe0e61c3676e681259dc43c2de7f64620998e1a8435eb2976496", + "url": "https://repo1.maven.org/maven2/io/grpc/grpc-context/1.33.1/grpc-context-1.33.1.jar" + }, + { + "coord": "io.opencensus:opencensus-api:0.24.0", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "io.grpc:grpc-context" + ], + "file": "v1/https/repo1.maven.org/maven2/io/opencensus/opencensus-api/0.24.0/opencensus-api-0.24.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/io/opencensus/opencensus-api/0.24.0/opencensus-api-0.24.0.jar", + "https://jcenter.bintray.com/io/opencensus/opencensus-api/0.24.0/opencensus-api-0.24.0.jar", + "https://maven.google.com/io/opencensus/opencensus-api/0.24.0/opencensus-api-0.24.0.jar" + ], + "sha256": "f561b1cc2673844288e596ddf5bb6596868a8472fd2cb8993953fc5c034b2352", + "url": "https://repo1.maven.org/maven2/io/opencensus/opencensus-api/0.24.0/opencensus-api-0.24.0.jar" + }, + { + "coord": "io.opencensus:opencensus-contrib-http-util:0.24.0", + "dependencies": [], + "directDependencies": [], + "exclusions": [ + "io.opencensus:opencensus-api", + "com.google.guava:guava" + ], + "file": "v1/https/jcenter.bintray.com/io/opencensus/opencensus-contrib-http-util/0.24.0/opencensus-contrib-http-util-0.24.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/io/opencensus/opencensus-contrib-http-util/0.24.0/opencensus-contrib-http-util-0.24.0.jar", + "https://jcenter.bintray.com/io/opencensus/opencensus-contrib-http-util/0.24.0/opencensus-contrib-http-util-0.24.0.jar", + "https://maven.google.com/io/opencensus/opencensus-contrib-http-util/0.24.0/opencensus-contrib-http-util-0.24.0.jar" + ], + "sha256": "7155273bbb1ed3d477ea33cf19d7bbc0b285ff395f43b29ae576722cf247000f", + "url": "https://jcenter.bintray.com/io/opencensus/opencensus-contrib-http-util/0.24.0/opencensus-contrib-http-util-0.24.0.jar" + }, + { + "coord": "javax.annotation:javax.annotation-api:1.3.2", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar", + "https://jcenter.bintray.com/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar", + "https://maven.google.com/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar" + ], + "sha256": "e04ba5195bcd555dc95650f7cc614d151e4bcd52d29a10b8aa2197f3ab89ab9b", + "url": "https://repo1.maven.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar" + }, + { + "coord": "org.checkerframework:checker-compat-qual:2.5.5", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/jcenter.bintray.com/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar", + "https://jcenter.bintray.com/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar", + "https://maven.google.com/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar" + ], + "sha256": "11d134b245e9cacc474514d2d66b5b8618f8039a1465cdc55bbc0b34e0008b7a", + "url": "https://jcenter.bintray.com/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar" + }, + { + "coord": "org.threeten:threetenbp:1.5.0", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/org/threeten/threetenbp/1.5.0/threetenbp-1.5.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/org/threeten/threetenbp/1.5.0/threetenbp-1.5.0.jar", + "https://jcenter.bintray.com/org/threeten/threetenbp/1.5.0/threetenbp-1.5.0.jar", + "https://maven.google.com/org/threeten/threetenbp/1.5.0/threetenbp-1.5.0.jar" + ], + "sha256": "dcf9c0f940739f2a825cd8626ff27113459a2f6eb18797c7152f93fff69c264f", + "url": "https://repo1.maven.org/maven2/org/threeten/threetenbp/1.5.0/threetenbp-1.5.0.jar" + } ], "version": "0.1.0" }