Skip to content

Instantly share code, notes, and snippets.

@suztomo
Last active November 23, 2020 15:43
Show Gist options
  • Save suztomo/0595022143156b3b433f6cc35ea14a7c to your computer and use it in GitHub Desktop.
Save suztomo/0595022143156b3b433f6cc35ea14a7c to your computer and use it in GitHub Desktop.
Side effect of deps: use google-cloud-spanner-bom instead of libraries-bom #258

googleapis/java-spanner-jdbc#258

GoogleCloudPlatform/java-docs-samples#4278 (comment) says:

It seems that this PR had the unintentional side effect of causing the following dependencies to no longer be considered transitive (they are no longer included from version 3.0.4 and up):

[INFO] |  |  +- com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:jar:3.0.3:compile
[INFO] |  |  +- com.google.api.grpc:grpc-google-cloud-spanner-v1:jar:3.0.3:compile
[INFO] |  |  \- com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:jar:3.0.3:compile

Let's compare the dependency tree of google-cloud-spanner-jdbc artifact (The root project of https://github.com/googleapis/java-spanner-jdbc repository).

Before the change

Commit: 6c2ff16aaaaee28e94c1466f7a0224166bae5b99

Dependency Tree

suztomo-macbookpro44% mvn dependency:tree -Dverbose
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for com.google.cloud:google-cloud-spanner-jdbc:jar:1.17.3-SNAPSHOT
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: com.google.api.grpc:grpc-google-cloud-spanner-v1:jar -> duplicate declaration of version (?) @ line 160, column 17
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO] Inspecting build with total of 1 modules...
[INFO] Installing Nexus Staging features:
[INFO]   ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin
[INFO] 
[INFO] -------------< com.google.cloud:google-cloud-spanner-jdbc >-------------
[INFO] Building Google Cloud Spanner JDBC 1.17.3-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ google-cloud-spanner-jdbc ---
[INFO] Verbose not supported since maven-dependency-plugin 3.0
[INFO] com.google.cloud:google-cloud-spanner-jdbc:jar:1.17.3-SNAPSHOT
[INFO] +- io.grpc:grpc-api:jar:1.32.1:compile
[INFO] |  +- io.grpc:grpc-context:jar:1.32.1:compile
[INFO] |  +- com.google.errorprone:error_prone_annotations:jar:2.4.0:compile
[INFO] |  \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.19:runtime
[INFO] +- com.google.cloud:google-cloud-core-grpc:jar:1.93.9:compile
[INFO] |  +- com.google.api:gax:jar:1.59.0:compile
[INFO] |  +- com.google.api:gax-grpc:jar:1.59.0:compile
[INFO] |  \- io.grpc:grpc-core:jar:1.32.1:compile
[INFO] +- com.google.api.grpc:proto-google-common-protos:jar:1.18.1:compile
[INFO] +- com.google.cloud:google-cloud-spanner:jar:2.0.1:compile
[INFO] |  +- io.grpc:grpc-auth:jar:1.32.1:compile
[INFO] |  +- com.google.android:annotations:jar:4.1.1.4:runtime
[INFO] |  +- io.perfmark:perfmark-api:jar:0.19.0:runtime
[INFO] |  +- io.grpc:grpc-protobuf:jar:1.32.1:compile
[INFO] |  +- io.grpc:grpc-protobuf-lite:jar:1.32.1:compile
[INFO] |  +- io.grpc:grpc-stub:jar:1.32.1:compile
[INFO] |  +- javax.annotation:javax.annotation-api:jar:1.3.2:compile
[INFO] |  +- com.google.auto.value:auto-value-annotations:jar:1.7.4:compile
[INFO] |  +- com.google.protobuf:protobuf-java-util:jar:3.13.0:compile
[INFO] |  +- com.google.api.grpc:grpc-google-common-protos:jar:1.18.1:compile
[INFO] |  +- com.google.guava:failureaccess:jar:1.0.1:compile
[INFO] |  +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
[INFO] |  +- org.checkerframework:checker-compat-qual:jar:2.5.5:compile
[INFO] |  +- com.google.j2objc:j2objc-annotations:jar:1.3:compile
[INFO] |  +- com.google.api.grpc:proto-google-iam-v1:jar:1.0.1:compile
[INFO] |  +- com.google.http-client:google-http-client-jackson2:jar:1.36.0:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-core:jar:2.11.1:compile
[INFO] |  +- io.opencensus:opencensus-api:jar:0.24.0:compile
[INFO] |  +- io.opencensus:opencensus-contrib-grpc-util:jar:0.24.0:compile
[INFO] |  +- org.apache.httpcomponents:httpclient:jar:4.5.12:compile
[INFO] |  +- commons-logging:commons-logging:jar:1.2:compile
[INFO] |  +- commons-codec:commons-codec:jar:1.11:compile
[INFO] |  +- org.apache.httpcomponents:httpcore:jar:4.4.13:compile
[INFO] |  +- io.opencensus:opencensus-contrib-http-util:jar:0.24.0:compile
[INFO] |  +- com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:jar:2.0.1:compile
[INFO] |  +- com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:jar:2.0.1:compile
[INFO] |  +- io.grpc:grpc-alts:jar:1.32.1:compile
[INFO] |  +- io.grpc:grpc-grpclb:jar:1.32.1:compile
[INFO] |  +- org.conscrypt:conscrypt-openjdk-uber:jar:2.2.1:compile
[INFO] |  +- com.google.code.gson:gson:jar:2.8.6:compile
[INFO] |  \- org.apache.commons:commons-lang3:jar:3.5:compile
[INFO] +- com.google.protobuf:protobuf-java:jar:3.13.0:compile
[INFO] +- com.google.guava:guava:jar:29.0-android:compile
[INFO] +- org.threeten:threetenbp:jar:1.4.4:compile
[INFO] +- io.grpc:grpc-netty-shaded:jar:1.32.1:compile
[INFO] +- com.google.api:api-common:jar:1.10.0:compile
[INFO] +- com.google.code.findbugs:jsr305:jar:3.0.2:compile
[INFO] +- com.google.http-client:google-http-client:jar:1.36.0:compile
[INFO] +- com.google.auth:google-auth-library-oauth2-http:jar:0.21.1:compile
[INFO] +- com.google.auth:google-auth-library-credentials:jar:0.21.1:compile
[INFO] +- com.google.cloud:google-cloud-core:jar:1.93.9:compile
[INFO] +- com.google.api.grpc:proto-google-cloud-spanner-v1:jar:2.0.1:compile
[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-v1:jar:2.0.1:test
[INFO] +- com.google.cloud:google-cloud-spanner:test-jar:tests:2.0.1:test
[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:jar:2.0.1:test
[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:jar:2.0.1:test
[INFO] +- com.google.truth:truth:jar:1.0.1:test
[INFO] |  \- com.googlecode.java-diff-utils:diffutils:jar:1.3.0:test
[INFO] +- org.hamcrest:hamcrest:jar:2.2:test
[INFO] +- org.mockito:mockito-core:jar:1.10.19:test
[INFO] |  \- org.objenesis:objenesis:jar:2.1:test
[INFO] +- junit:junit:jar:4.13.1:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] \- com.google.api:gax-grpc:jar:testlib:1.58.2:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.171 s
[INFO] Finished at: 2020-11-23T10:37:27-05:00
[INFO] ------------------------------------------------------------------------

After the change.

Commit: c9906c9440d1574ae74d735aad8b3c255704d59d

Dependency Tree

suztomo-macbookpro44% mvn dependency:tree -Dverbose                        
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for com.google.cloud:google-cloud-spanner-jdbc:jar:1.17.3-SNAPSHOT
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: com.google.api.grpc:grpc-google-cloud-spanner-v1:jar -> duplicate declaration of version (?) @ line 160, column 17
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO] Inspecting build with total of 1 modules...
[INFO] Installing Nexus Staging features:
[INFO]   ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin
[INFO] 
[INFO] -------------< com.google.cloud:google-cloud-spanner-jdbc >-------------
[INFO] Building Google Cloud Spanner JDBC 1.17.3-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ google-cloud-spanner-jdbc ---
[INFO] Verbose not supported since maven-dependency-plugin 3.0
[INFO] com.google.cloud:google-cloud-spanner-jdbc:jar:1.17.3-SNAPSHOT
[INFO] +- io.grpc:grpc-api:jar:1.32.1:compile
[INFO] |  +- io.grpc:grpc-context:jar:1.32.1:compile
[INFO] |  +- com.google.errorprone:error_prone_annotations:jar:2.4.0:compile
[INFO] |  \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.19:runtime
[INFO] +- com.google.cloud:google-cloud-core-grpc:jar:1.93.9:compile
[INFO] |  +- com.google.api:gax:jar:1.58.2:compile
[INFO] |  +- com.google.api:gax-grpc:jar:1.58.2:compile
[INFO] |  \- io.grpc:grpc-core:jar:1.32.1:compile
[INFO] +- com.google.api.grpc:proto-google-common-protos:jar:1.18.1:compile
[INFO] +- com.google.cloud:google-cloud-spanner:jar:2.0.2:compile
[INFO] |  +- io.grpc:grpc-auth:jar:1.32.1:compile
[INFO] |  +- com.google.android:annotations:jar:4.1.1.4:runtime
[INFO] |  +- io.perfmark:perfmark-api:jar:0.19.0:runtime
[INFO] |  +- io.grpc:grpc-protobuf:jar:1.32.1:compile
[INFO] |  +- io.grpc:grpc-protobuf-lite:jar:1.32.1:compile
[INFO] |  +- io.grpc:grpc-stub:jar:1.32.1:compile
[INFO] |  +- javax.annotation:javax.annotation-api:jar:1.3.2:compile
[INFO] |  +- com.google.auto.value:auto-value-annotations:jar:1.7.4:compile
[INFO] |  +- com.google.protobuf:protobuf-java-util:jar:3.13.0:compile
[INFO] |  +- com.google.api.grpc:grpc-google-common-protos:jar:1.18.1:compile
[INFO] |  +- com.google.guava:failureaccess:jar:1.0.1:compile
[INFO] |  +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
[INFO] |  +- org.checkerframework:checker-compat-qual:jar:2.5.5:compile
[INFO] |  +- com.google.j2objc:j2objc-annotations:jar:1.3:compile
[INFO] |  +- com.google.api.grpc:proto-google-iam-v1:jar:1.0.1:compile
[INFO] |  +- com.google.http-client:google-http-client-jackson2:jar:1.36.0:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-core:jar:2.11.1:compile
[INFO] |  +- io.opencensus:opencensus-api:jar:0.24.0:compile
[INFO] |  +- io.opencensus:opencensus-contrib-grpc-util:jar:0.24.0:compile
[INFO] |  +- org.apache.httpcomponents:httpclient:jar:4.5.12:compile
[INFO] |  +- commons-logging:commons-logging:jar:1.2:compile
[INFO] |  +- commons-codec:commons-codec:jar:1.11:compile
[INFO] |  +- org.apache.httpcomponents:httpcore:jar:4.4.13:compile
[INFO] |  +- io.opencensus:opencensus-contrib-http-util:jar:0.24.0:compile
[INFO] |  +- com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:jar:2.0.2:compile
[INFO] |  +- com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:jar:2.0.2:compile
[INFO] |  +- io.grpc:grpc-alts:jar:1.32.1:compile
[INFO] |  +- io.grpc:grpc-grpclb:jar:1.32.1:compile
[INFO] |  +- org.conscrypt:conscrypt-openjdk-uber:jar:2.2.1:compile
[INFO] |  +- com.google.code.gson:gson:jar:2.8.6:compile
[INFO] |  \- org.apache.commons:commons-lang3:jar:3.5:compile
[INFO] +- com.google.protobuf:protobuf-java:jar:3.13.0:compile
[INFO] +- com.google.guava:guava:jar:29.0-android:compile
[INFO] +- org.threeten:threetenbp:jar:1.4.4:compile
[INFO] +- io.grpc:grpc-netty-shaded:jar:1.32.1:compile
[INFO] +- com.google.api:api-common:jar:1.10.0:compile
[INFO] +- com.google.code.findbugs:jsr305:jar:3.0.2:compile
[INFO] +- com.google.http-client:google-http-client:jar:1.36.0:compile
[INFO] +- com.google.auth:google-auth-library-oauth2-http:jar:0.21.1:compile
[INFO] +- com.google.auth:google-auth-library-credentials:jar:0.21.1:compile
[INFO] +- com.google.cloud:google-cloud-core:jar:1.93.9:compile
[INFO] +- com.google.api.grpc:proto-google-cloud-spanner-v1:jar:2.0.2:compile
[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-v1:jar:2.0.2:test
[INFO] +- com.google.cloud:google-cloud-spanner:test-jar:tests:2.0.2:test
[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:jar:2.0.2:test
[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:jar:2.0.2:test
[INFO] +- com.google.truth:truth:jar:1.0.1:test
[INFO] |  \- com.googlecode.java-diff-utils:diffutils:jar:1.3.0:test
[INFO] +- org.hamcrest:hamcrest:jar:2.2:test
[INFO] +- org.mockito:mockito-core:jar:1.10.19:test
[INFO] |  \- org.objenesis:objenesis:jar:2.1:test
[INFO] +- junit:junit:jar:4.13.1:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] \- com.google.api:gax-grpc:jar:testlib:1.58.2:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.195 s
[INFO] Finished at: 2020-11-23T10:38:02-05:00
[INFO] ------------------------------------------------------------------------

Dependency Tree Diff

diff --git a/tmp/tree.before b/tmp/tree.after
index 1a3af7a..cf24661 100644
--- a/tmp/tree.before
+++ b/tmp/tree.after
@@ -23,11 +23,11 @@
 [INFO] |  +- com.google.errorprone:error_prone_annotations:jar:2.4.0:compile
 [INFO] |  \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.19:runtime
 [INFO] +- com.google.cloud:google-cloud-core-grpc:jar:1.93.9:compile
-[INFO] |  +- com.google.api:gax:jar:1.59.0:compile
-[INFO] |  +- com.google.api:gax-grpc:jar:1.59.0:compile
+[INFO] |  +- com.google.api:gax:jar:1.58.2:compile
+[INFO] |  +- com.google.api:gax-grpc:jar:1.58.2:compile
 [INFO] |  \- io.grpc:grpc-core:jar:1.32.1:compile
 [INFO] +- com.google.api.grpc:proto-google-common-protos:jar:1.18.1:compile
-[INFO] +- com.google.cloud:google-cloud-spanner:jar:2.0.1:compile
+[INFO] +- com.google.cloud:google-cloud-spanner:jar:2.0.2:compile
 [INFO] |  +- io.grpc:grpc-auth:jar:1.32.1:compile
 [INFO] |  +- com.google.android:annotations:jar:4.1.1.4:runtime
 [INFO] |  +- io.perfmark:perfmark-api:jar:0.19.0:runtime
@@ -52,8 +52,8 @@
 [INFO] |  +- commons-codec:commons-codec:jar:1.11:compile
 [INFO] |  +- org.apache.httpcomponents:httpcore:jar:4.4.13:compile
 [INFO] |  +- io.opencensus:opencensus-contrib-http-util:jar:0.24.0:compile
-[INFO] |  +- com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:jar:2.0.1:compile
-[INFO] |  +- com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:jar:2.0.1:compile
+[INFO] |  +- com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:jar:2.0.2:compile
+[INFO] |  +- com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:jar:2.0.2:compile
 [INFO] |  +- io.grpc:grpc-alts:jar:1.32.1:compile
 [INFO] |  +- io.grpc:grpc-grpclb:jar:1.32.1:compile
 [INFO] |  +- org.conscrypt:conscrypt-openjdk-uber:jar:2.2.1:compile
@@ -69,11 +69,11 @@
 [INFO] +- com.google.auth:google-auth-library-oauth2-http:jar:0.21.1:compile
 [INFO] +- com.google.auth:google-auth-library-credentials:jar:0.21.1:compile
 [INFO] +- com.google.cloud:google-cloud-core:jar:1.93.9:compile
-[INFO] +- com.google.api.grpc:proto-google-cloud-spanner-v1:jar:2.0.1:compile
-[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-v1:jar:2.0.1:test
-[INFO] +- com.google.cloud:google-cloud-spanner:test-jar:tests:2.0.1:test
-[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:jar:2.0.1:test
-[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:jar:2.0.1:test
+[INFO] +- com.google.api.grpc:proto-google-cloud-spanner-v1:jar:2.0.2:compile
+[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-v1:jar:2.0.2:test
+[INFO] +- com.google.cloud:google-cloud-spanner:test-jar:tests:2.0.2:test
+[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:jar:2.0.2:test
+[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:jar:2.0.2:test
 [INFO] +- com.google.truth:truth:jar:1.0.1:test
 [INFO] |  \- com.googlecode.java-diff-utils:diffutils:jar:1.3.0:test
 [INFO] +- org.hamcrest:hamcrest:jar:2.2:test
@@ -85,6 +85,6 @@
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------
-[INFO] Total time:  2.700 s
-[INFO] Finished at: 2020-11-23T10:40:44-05:00
+[INFO] Total time:  2.051 s
+[INFO] Finished at: 2020-11-23T10:40:56-05:00
 [INFO] ------------------------------------------------------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment