diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index 40920750caab..341596b68d00 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -21,6 +21,7 @@ package org.apache.beam.gradle import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import groovy.json.JsonOutput import groovy.json.JsonSlurper +import org.gradle.api.attributes.Category import org.gradle.api.GradleException import org.gradle.api.Plugin import org.gradle.api.Project @@ -392,18 +393,12 @@ class BeamModulePlugin implements Plugin { def cassandra_driver_version = "3.10.2" def checkerframework_version = "3.7.0" def classgraph_version = "4.8.65" - def gax_version = "1.60.0" - def generated_grpc_ga_version = "1.85.1" - def google_auth_version = "0.19.0" def google_clients_version = "1.30.10" def google_cloud_bigdataoss_version = "2.1.5" - def google_cloud_core_version = "1.93.7" def google_cloud_pubsublite_version = "0.4.1" - def google_cloud_spanner_version = "1.59.0" - def google_cloud_datacatalog_version = "0.32.1" def google_code_gson_version = "2.8.6" - def google_http_clients_version = "1.34.0" def google_oauth_clients_version = "1.31.0" + // Try to keep grpc_version consistent with gRPC version in google_cloud_platform_libraries_bom def grpc_version = "1.32.2" def guava_version = "25.1-jre" def hadoop_version = "2.8.5" @@ -416,7 +411,6 @@ class BeamModulePlugin implements Plugin { def netty_version = "4.1.51.Final" def postgres_version = "42.2.16" def powermock_version = "2.0.2" - def proto_google_common_protos_version = "1.17.0" def protobuf_version = "3.12.0" def quickcheck_version = "0.8" def slf4j_version = "1.7.30" @@ -470,12 +464,12 @@ class BeamModulePlugin implements Plugin { commons_lang3 : "org.apache.commons:commons-lang3:3.9", commons_math3 : "org.apache.commons:commons-math3:3.6.1", error_prone_annotations : "com.google.errorprone:error_prone_annotations:2.3.1", - gax : "com.google.api:gax:$gax_version", - gax_grpc : "com.google.api:gax-grpc:$gax_version", + gax : "com.google.api:gax", // google_cloud_platform_libraries_bom sets version + gax_grpc : "com.google.api:gax-grpc", // google_cloud_platform_libraries_bom sets version google_api_client : "com.google.api-client:google-api-client:$google_clients_version", google_api_client_jackson2 : "com.google.api-client:google-api-client-jackson2:$google_clients_version", google_api_client_java6 : "com.google.api-client:google-api-client-java6:$google_clients_version", - google_api_common : "com.google.api:api-common:1.8.1", + google_api_common : "com.google.api:api-common", // google_cloud_platform_libraries_bom sets version google_api_services_bigquery : "com.google.apis:google-api-services-bigquery:v2-rev20200719-$google_clients_version", google_api_services_clouddebugger : "com.google.apis:google-api-services-clouddebugger:v2-rev20200501-$google_clients_version", google_api_services_cloudresourcemanager : "com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-$google_clients_version", @@ -483,40 +477,46 @@ class BeamModulePlugin implements Plugin { google_api_services_healthcare : "com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-$google_clients_version", google_api_services_pubsub : "com.google.apis:google-api-services-pubsub:v1-rev20200713-$google_clients_version", google_api_services_storage : "com.google.apis:google-api-services-storage:v1-rev20200611-$google_clients_version", - google_auth_library_credentials : "com.google.auth:google-auth-library-credentials:$google_auth_version", - google_auth_library_oauth2_http : "com.google.auth:google-auth-library-oauth2-http:$google_auth_version", - google_cloud_bigquery : "com.google.cloud:google-cloud-bigquery:1.108.0", - google_cloud_bigquery_storage : "com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta", + google_auth_library_credentials : "com.google.auth:google-auth-library-credentials", // google_cloud_platform_libraries_bom sets version + google_auth_library_oauth2_http : "com.google.auth:google-auth-library-oauth2-http", // google_cloud_platform_libraries_bom sets version + google_cloud_bigquery : "com.google.cloud:google-cloud-bigquery", // google_cloud_platform_libraries_bom sets version + google_cloud_bigquery_storage : "com.google.cloud:google-cloud-bigquerystorage", // google_cloud_platform_libraries_bom sets version google_cloud_bigtable_client_core : "com.google.cloud.bigtable:bigtable-client-core:1.16.0", - google_cloud_core : "com.google.cloud:google-cloud-core:$google_cloud_core_version", - google_cloud_core_grpc : "com.google.cloud:google-cloud-core-grpc:$google_cloud_core_version", - google_cloud_datacatalog_v1beta1 : "com.google.cloud:google-cloud-datacatalog:$google_cloud_datacatalog_version", + google_cloud_core : "com.google.cloud:google-cloud-core", // google_cloud_platform_libraries_bom sets version + google_cloud_core_grpc : "com.google.cloud:google-cloud-core-grpc", // google_cloud_platform_libraries_bom sets version + google_cloud_datacatalog_v1beta1 : "com.google.cloud:google-cloud-datacatalog", // google_cloud_platform_libraries_bom sets version google_cloud_dataflow_java_proto_library_all: "com.google.cloud.dataflow:google-cloud-dataflow-java-proto-library-all:0.5.160304", google_cloud_datastore_v1_proto_client : "com.google.cloud.datastore:datastore-v1-proto-client:1.6.3", google_cloud_pubsublite : "com.google.cloud:google-cloud-pubsublite:$google_cloud_pubsublite_version", - google_cloud_spanner : "com.google.cloud:google-cloud-spanner:$google_cloud_spanner_version", + // The GCP Libraries BOM dashboard shows the versions set by the BOM: + // https://storage.googleapis.com/cloud-opensource-java-dashboard/com.google.cloud/libraries-bom/12.0.0/artifact_details.html + // Update libraries-bom version on sdks/java/container/license_scripts/dep_urls_java.yaml + google_cloud_platform_libraries_bom : "com.google.cloud:libraries-bom:13.2.0", + google_cloud_spanner : "com.google.cloud:google-cloud-spanner", // google_cloud_platform_libraries_bom sets version google_code_gson : "com.google.code.gson:gson:$google_code_gson_version", - google_http_client : "com.google.http-client:google-http-client:$google_http_clients_version", - google_http_client_apache_v2 : "com.google.http-client:google-http-client-apache-v2:$google_http_clients_version", + // google-http-client's version is explicitly declared for sdks/java/maven-archetypes/examples + // This version should be in line with the one in com.google.cloud:libraries-bom. + google_http_client : "com.google.http-client:google-http-client", // google_cloud_platform_libraries_bom sets version + google_http_client_apache_v2 : "com.google.http-client:google-http-client-apache-v2", // google_cloud_platform_libraries_bom sets version google_http_client_jackson : "com.google.http-client:google-http-client-jackson:1.29.2", - google_http_client_jackson2 : "com.google.http-client:google-http-client-jackson2:$google_http_clients_version", - google_http_client_protobuf : "com.google.http-client:google-http-client-protobuf:$google_http_clients_version", + google_http_client_jackson2 : "com.google.http-client:google-http-client-jackson2", // google_cloud_platform_libraries_bom sets version + google_http_client_protobuf : "com.google.http-client:google-http-client-protobuf", // google_cloud_platform_libraries_bom sets version google_oauth_client : "com.google.oauth-client:google-oauth-client:$google_oauth_clients_version", google_oauth_client_java6 : "com.google.oauth-client:google-oauth-client-java6:$google_oauth_clients_version", // Don't use grpc_all, it can cause issues in Bazel builds. Reference the gRPC libraries you need individually instead. - grpc_api : "io.grpc:grpc-api:$grpc_version", - grpc_alts : "io.grpc:grpc-alts:$grpc_version", - grpc_auth : "io.grpc:grpc-auth:$grpc_version", - grpc_core : "io.grpc:grpc-core:$grpc_version", - grpc_context : "io.grpc:grpc-context:$grpc_version", - grpc_google_cloud_pubsub_v1 : "com.google.api.grpc:grpc-google-cloud-pubsub-v1:$generated_grpc_ga_version", + grpc_alts : "io.grpc:grpc-alts", // google_cloud_platform_libraries_bom sets version + grpc_api : "io.grpc:grpc-api", // google_cloud_platform_libraries_bom sets version + grpc_auth : "io.grpc:grpc-auth", // google_cloud_platform_libraries_bom sets version + grpc_context : "io.grpc:grpc-context", // google_cloud_platform_libraries_bom sets version + grpc_core : "io.grpc:grpc-core", // google_cloud_platform_libraries_bom sets version + grpc_google_cloud_pubsub_v1 : "com.google.api.grpc:grpc-google-cloud-pubsub-v1", // google_cloud_platform_libraries_bom sets version grpc_google_cloud_pubsublite_v1 : "com.google.api.grpc:grpc-google-cloud-pubsublite-v1:$google_cloud_pubsublite_version", - grpc_grpclb : "io.grpc:grpc-grpclb:$grpc_version", - grpc_protobuf : "io.grpc:grpc-protobuf:$grpc_version", + grpc_grpclb : "io.grpc:grpc-grpclb", // google_cloud_platform_libraries_bom sets version + grpc_protobuf : "io.grpc:grpc-protobuf", // google_cloud_platform_libraries_bom sets version grpc_protobuf_lite : "io.grpc:grpc-protobuf-lite:$grpc_version", - grpc_netty : "io.grpc:grpc-netty:$grpc_version", - grpc_netty_shaded : "io.grpc:grpc-netty-shaded:$grpc_version", - grpc_stub : "io.grpc:grpc-stub:$grpc_version", + grpc_netty : "io.grpc:grpc-netty", // google_cloud_platform_libraries_bom sets version + grpc_netty_shaded : "io.grpc:grpc-netty-shaded", // google_cloud_platform_libraries_bom sets version + grpc_stub : "io.grpc:grpc-stub", // google_cloud_platform_libraries_bom sets version guava : "com.google.guava:guava:$guava_version", guava_testlib : "com.google.guava:guava-testlib:$guava_version", hadoop_client : "org.apache.hadoop:hadoop-client:$hadoop_version", @@ -556,13 +556,13 @@ class BeamModulePlugin implements Plugin { powermock_mockito : "org.powermock:powermock-api-mockito2:$powermock_version", protobuf_java : "com.google.protobuf:protobuf-java:$protobuf_version", protobuf_java_util : "com.google.protobuf:protobuf-java-util:$protobuf_version", - proto_google_cloud_bigquery_storage_v1beta1 : "com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.85.1", - proto_google_cloud_bigtable_v2 : "com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1", - proto_google_cloud_datastore_v1 : "com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0", - proto_google_cloud_pubsub_v1 : "com.google.api.grpc:proto-google-cloud-pubsub-v1:$generated_grpc_ga_version", + proto_google_cloud_bigquery_storage_v1beta1 : "com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1", // google_cloud_platform_libraries_bom sets version + proto_google_cloud_bigtable_v2 : "com.google.api.grpc:proto-google-cloud-bigtable-v2", // google_cloud_platform_libraries_bom sets version + proto_google_cloud_datastore_v1 : "com.google.api.grpc:proto-google-cloud-datastore-v1", // google_cloud_platform_libraries_bom sets version + proto_google_cloud_pubsub_v1 : "com.google.api.grpc:proto-google-cloud-pubsub-v1", // google_cloud_platform_libraries_bom sets version proto_google_cloud_pubsublite_v1 : "com.google.api.grpc:proto-google-cloud-pubsublite-v1:$google_cloud_pubsublite_version", - proto_google_cloud_spanner_admin_database_v1: "com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:$google_cloud_spanner_version", - proto_google_common_protos : "com.google.api.grpc:proto-google-common-protos:$proto_google_common_protos_version", + proto_google_cloud_spanner_admin_database_v1: "com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1", // google_cloud_platform_libraries_bom sets version + proto_google_common_protos : "com.google.api.grpc:proto-google-common-protos", // google_cloud_platform_libraries_bom sets version slf4j_api : "org.slf4j:slf4j-api:$slf4j_version", slf4j_simple : "org.slf4j:slf4j-simple:$slf4j_version", slf4j_jdk14 : "org.slf4j:slf4j-jdk14:$slf4j_version", @@ -1263,8 +1263,18 @@ class BeamModulePlugin implements Plugin { } def dependenciesNode = root.appendNode('dependencies') + + // BOMs, declared with 'platform' or 'enforced-platform', appear in section + def boms = [] + def generateDependenciesFromConfiguration = { param -> project.configurations."${param.configuration}".allDependencies.each { + String category = it.getAttributes().getAttribute(Category.CATEGORY_ATTRIBUTE) + if (Category.ENFORCED_PLATFORM == category || Category.REGULAR_PLATFORM == category) { + boms.add(it) + return + } + def dependencyNode = dependenciesNode.appendNode('dependency') def appendClassifier = { dep -> dep.artifacts.each { art -> @@ -1283,7 +1293,9 @@ class BeamModulePlugin implements Plugin { } else { dependencyNode.appendNode('groupId', it.group) dependencyNode.appendNode('artifactId', it.name) - dependencyNode.appendNode('version', it.version) + if (it.version != null) { // bom-managed artifacts do not have their versions + dependencyNode.appendNode('version', it.version) + } dependencyNode.appendNode('scope', param.scope) appendClassifier(it) } @@ -1313,6 +1325,18 @@ class BeamModulePlugin implements Plugin { configuration: (configuration.shadowClosure ? 'shadow' : 'compile'), scope: 'compile') generateDependenciesFromConfiguration(configuration: 'provided', scope: 'provided') + if (!boms.isEmpty()) { + def dependencyManagementNode = root.appendNode('dependencyManagement') + def dependencyManagementDependencies = dependencyManagementNode.appendNode('dependencies') + boms.each { + def dependencyNode = dependencyManagementDependencies.appendNode('dependency') + dependencyNode.appendNode('groupId', it.group) + dependencyNode.appendNode('artifactId', it.name) + dependencyNode.appendNode('version', it.version) + dependencyNode.appendNode('type', 'pom') + dependencyNode.appendNode('scope', 'import') + } + } // NB: This must come after asNode() logic, as it seems asNode() // removes XML comments. // TODO: Load this from file? @@ -1377,7 +1401,10 @@ class BeamModulePlugin implements Plugin { // has different dependencies than our project. if (config.getName() != "errorprone" && !inDependencyUpdates) { config.resolutionStrategy { - force project.library.java.values() + // Filtering versionless coordinates that depend on BOM. Beam project needs to set the + // versions for only handful libraries when building the project (BEAM-9542). + def librariesWithVersion = project.library.java.values().findAll { it.split(':').size() > 2 } + force librariesWithVersion } } } diff --git a/examples/java/build.gradle b/examples/java/build.gradle index eaad35f85937..0cf09565b7ed 100644 --- a/examples/java/build.gradle +++ b/examples/java/build.gradle @@ -48,6 +48,7 @@ configurations.sparkRunnerPreCommit { } dependencies { + compile enforcedPlatform(library.java.google_cloud_platform_libraries_bom) compile library.java.vendored_guava_26_0_jre compile project(path: ":sdks:java:core", configuration: "shadow") compile project(":sdks:java:extensions:google-cloud-platform-core") diff --git a/examples/kotlin/build.gradle b/examples/kotlin/build.gradle index 7b062cc330a7..f77a803fb398 100644 --- a/examples/kotlin/build.gradle +++ b/examples/kotlin/build.gradle @@ -47,6 +47,7 @@ configurations.sparkRunnerPreCommit { } dependencies { + compile enforcedPlatform(library.java.google_cloud_platform_libraries_bom) compile library.java.vendored_guava_26_0_jre compile project(path: ":sdks:java:core", configuration: "shadow") compile project(":sdks:java:extensions:google-cloud-platform-core") diff --git a/runners/google-cloud-dataflow-java/build.gradle b/runners/google-cloud-dataflow-java/build.gradle index c0d7d677f9e4..877f3ba645fc 100644 --- a/runners/google-cloud-dataflow-java/build.gradle +++ b/runners/google-cloud-dataflow-java/build.gradle @@ -63,6 +63,7 @@ configurations { } dependencies { + compile enforcedPlatform(library.java.google_cloud_platform_libraries_bom) compile library.java.vendored_guava_26_0_jre compile project(path: ":model:pipeline", configuration: "shadow") compile project(path: ":sdks:java:core", configuration: "shadow") diff --git a/runners/google-cloud-dataflow-java/worker/build.gradle b/runners/google-cloud-dataflow-java/worker/build.gradle index ea7492383271..05fe61a20e68 100644 --- a/runners/google-cloud-dataflow-java/worker/build.gradle +++ b/runners/google-cloud-dataflow-java/worker/build.gradle @@ -67,6 +67,7 @@ dependencies { // // All main sourceset dependencies here should be listed as compile scope so that the dependencies // are all packaged into a single uber jar allowing the jar to serve as an application. + compile enforcedPlatform(library.java.google_cloud_platform_libraries_bom) compile project(":runners:google-cloud-dataflow-java") compile project(path: ":sdks:java:core", configuration: "shadow") compile project(":sdks:java:extensions:google-cloud-platform-core") diff --git a/sdks/java/container/license_scripts/dep_urls_java.yaml b/sdks/java/container/license_scripts/dep_urls_java.yaml index 37f4b6a5e035..280b1a8cee79 100644 --- a/sdks/java/container/license_scripts/dep_urls_java.yaml +++ b/sdks/java/container/license_scripts/dep_urls_java.yaml @@ -40,6 +40,10 @@ jcip-annotations: jaxen: '1.1.6': type: "3-Clause BSD" +libraries-bom: + '13.2.0': + license: "https://raw.githubusercontent.com/GoogleCloudPlatform/cloud-opensource-java/master/LICENSE" + type: "Apache License 2.0" paranamer: '2.7': license: "https://raw.githubusercontent.com/paul-hammant/paranamer/master/LICENSE.txt" diff --git a/sdks/java/extensions/google-cloud-platform-core/build.gradle b/sdks/java/extensions/google-cloud-platform-core/build.gradle index bd23376c90c8..b2ffaaed09f5 100644 --- a/sdks/java/extensions/google-cloud-platform-core/build.gradle +++ b/sdks/java/extensions/google-cloud-platform-core/build.gradle @@ -36,6 +36,7 @@ test { } dependencies { + compile enforcedPlatform(library.java.google_cloud_platform_libraries_bom) compile library.java.vendored_guava_26_0_jre compile project(path: ":sdks:java:core", configuration: "shadow") compile library.java.google_http_client_jackson2 diff --git a/sdks/java/extensions/sql/datacatalog/build.gradle b/sdks/java/extensions/sql/datacatalog/build.gradle index 5068c8bde80a..ad1fab0bceb9 100644 --- a/sdks/java/extensions/sql/datacatalog/build.gradle +++ b/sdks/java/extensions/sql/datacatalog/build.gradle @@ -23,6 +23,7 @@ plugins { id 'org.apache.beam.module' } applyJavaNature(automaticModuleName: 'org.apache.beam.sdk.extensions.sql.datacatalog') dependencies { + compile enforcedPlatform(library.java.google_cloud_platform_libraries_bom) compile(library.java.google_cloud_datacatalog_v1beta1) { exclude group: 'io.grpc', module: 'grpc-core' // Use Beam's version } diff --git a/sdks/java/extensions/sql/zetasql/build.gradle b/sdks/java/extensions/sql/zetasql/build.gradle index db409f145178..23e88609953e 100644 --- a/sdks/java/extensions/sql/zetasql/build.gradle +++ b/sdks/java/extensions/sql/zetasql/build.gradle @@ -31,6 +31,7 @@ ext.summary = "ZetaSQL to Calcite translator" def zetasql_version = "2020.10.1" dependencies { + compile enforcedPlatform(library.java.google_cloud_platform_libraries_bom) compile project(":sdks:java:core") compile project(":sdks:java:extensions:sql") compile library.java.vendored_calcite_1_20_0 diff --git a/sdks/java/io/google-cloud-platform/build.gradle b/sdks/java/io/google-cloud-platform/build.gradle index 5fb72d71e211..47cda04f3e8a 100644 --- a/sdks/java/io/google-cloud-platform/build.gradle +++ b/sdks/java/io/google-cloud-platform/build.gradle @@ -29,6 +29,7 @@ description = "Apache Beam :: SDKs :: Java :: IO :: Google Cloud Platform" ext.summary = "IO library to read and write Google Cloud Platform systems from Beam." dependencies { + compile enforcedPlatform(library.java.google_cloud_platform_libraries_bom) compile project(path: ":sdks:java:core", configuration: "shadow") compile project(":sdks:java:expansion-service") compile project(":sdks:java:extensions:google-cloud-platform-core") diff --git a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/GcpApiSurfaceTest.java b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/GcpApiSurfaceTest.java index 8178a70a98f0..cccf553ff4c4 100644 --- a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/GcpApiSurfaceTest.java +++ b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/GcpApiSurfaceTest.java @@ -86,14 +86,6 @@ public void testGcpApiSurface() throws Exception { Matchers.>equalTo(com.google.cloud.ByteArray.class), Matchers.>equalTo(com.google.cloud.Date.class), Matchers.>equalTo(com.google.cloud.Timestamp.class), - // TODO: remove the following classes once spanner updates APIs of AsyncResultSet: - // https://github.com/googleapis/java-spanner/issues/410 - Matchers.>equalTo(com.google.common.collect.ImmutableCollection.class), - Matchers.>equalTo(com.google.common.collect.ImmutableCollection.Builder.class), - Matchers.>equalTo(com.google.common.collect.ImmutableList.class), - Matchers.>equalTo(com.google.common.collect.ImmutableList.Builder.class), - Matchers.>equalTo(com.google.common.collect.UnmodifiableIterator.class), - Matchers.>equalTo(com.google.common.collect.UnmodifiableListIterator.class), classesInPackage("com.google.cloud.spanner"), classesInPackage("com.google.datastore.v1"), classesInPackage("com.google.protobuf"), diff --git a/sdks/java/io/splunk/build.gradle b/sdks/java/io/splunk/build.gradle index 0ffe998a553e..5e3a47f01500 100644 --- a/sdks/java/io/splunk/build.gradle +++ b/sdks/java/io/splunk/build.gradle @@ -25,6 +25,7 @@ description = "Apache Beam :: SDKs :: Java :: IO :: Splunk" ext.summary = "IO to write events to Splunk Http Event Collector (HEC)" dependencies { + compile platform(library.java.google_cloud_platform_libraries_bom) compile library.java.slf4j_api compile library.java.google_api_client compile library.java.google_http_client_apache_v2 diff --git a/sdks/java/maven-archetypes/examples/build.gradle b/sdks/java/maven-archetypes/examples/build.gradle index 970d65d0f1cd..0303c410f00c 100644 --- a/sdks/java/maven-archetypes/examples/build.gradle +++ b/sdks/java/maven-archetypes/examples/build.gradle @@ -28,11 +28,11 @@ processResources { 'project.version': version, 'bigquery.version': dependencies.create(project.library.java.google_api_services_bigquery).getVersion(), 'google-api-client.version': dependencies.create(project.library.java.google_api_client).getVersion(), - 'google-http-client.version': dependencies.create(project.library.java.google_http_client).getVersion(), 'hamcrest.version': dependencies.create(project.library.java.hamcrest_library).getVersion(), 'jackson.version': dependencies.create(project.library.java.jackson_core).getVersion(), 'joda.version': dependencies.create(project.library.java.joda_time).getVersion(), 'junit.version': dependencies.create(project.library.java.junit).getVersion(), + 'libraries-bom.version': dependencies.create(project.library.java.google_cloud_platform_libraries_bom).getVersion(), 'pubsub.version': dependencies.create(project.library.java.google_api_services_pubsub).getVersion(), 'slf4j.version': dependencies.create(project.library.java.slf4j_api).getVersion(), 'spark.version': dependencies.create(project.library.java.spark_core).getVersion(), diff --git a/sdks/java/maven-archetypes/examples/src/main/resources/archetype-resources/pom.xml b/sdks/java/maven-archetypes/examples/src/main/resources/archetype-resources/pom.xml index 8733942d0d93..c7c2d40ad1a0 100644 --- a/sdks/java/maven-archetypes/examples/src/main/resources/archetype-resources/pom.xml +++ b/sdks/java/maven-archetypes/examples/src/main/resources/archetype-resources/pom.xml @@ -31,11 +31,11 @@ @bigquery.version@ @google-api-client.version@ - @google-http-client.version@ @hamcrest.version@ @jackson.version@ @joda.version@ @junit.version@ + @libraries-bom.version@ @maven-compiler-plugin.version@ @maven-exec-plugin.version@ @maven-jar-plugin.version@ @@ -379,7 +379,6 @@ com.google.http-client google-http-client - ${google-http-client.version} @@ -460,4 +459,17 @@ test + + + + + + com.google.cloud + libraries-bom + ${libraries-bom.version} + pom + import + + + diff --git a/sdks/java/testing/test-utils/build.gradle b/sdks/java/testing/test-utils/build.gradle index c69f0eb1cfff..8ce707c191e6 100644 --- a/sdks/java/testing/test-utils/build.gradle +++ b/sdks/java/testing/test-utils/build.gradle @@ -26,6 +26,7 @@ applyJavaNature(enableChecker:false, description = "Apache Beam :: SDKs :: Java :: Test Utils" dependencies { + compile enforcedPlatform(library.java.google_cloud_platform_libraries_bom) compile project(path: ":sdks:java:core", configuration: "shadow") compile library.java.vendored_guava_26_0_jre compile library.java.google_cloud_bigquery