[ 
https://issues.apache.org/jira/browse/BEAM-9444?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17061320#comment-17061320
 ] 

Tomo Suzuki edited comment on BEAM-9444 at 3/18/20, 2:15 AM:
-------------------------------------------------------------

{{BEAM-9444-gcp-bom(fec5361f)}} still has problem in missing class such as 
{{org.apache.beam.sdk.options.PipelineOptions}} and 
{{com.google.protobuf.ByteString}}.

{noformat}
Linkage Check difference on beam-sdks-java-io-google-cloud-platform between 
master(b00885a1) and BEAM-9444-gcp-bom(fec5361f):
Lines starting with '<' mean the branch remedies the errors (good)
Lines starting with '>' mean the branch introduces new errors (bad)
7c7,436
< Class com.github.luben.zstd.ZstdInputStream is not found;
---
> Class org.apache.beam.sdk.options.PipelineOptions is not found;
>   referenced by 27 class files
>     org.apache.beam.sdk.io.gcp.bigtable.BigtableIO 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigtable.BigtableConfig 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigquery.WriteRename 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigquery.StreamingWriteTables 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigquery.BigQueryIO 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigquery.BigQueryQuerySource 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
...

> Class com.google.protobuf.ByteString is not found;
>   referenced by 13 class files
>     org.apache.beam.sdk.io.gcp.bigtable.BigtableIO 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigtable.BigtableServiceImpl 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigquery.BigQueryStorageStreamSource 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
{noformat}


was (Author: suztomo):
 BEAM-9444-gcp-bom(fec5361f) still has problem in missing class such as 
{{org.apache.beam.sdk.options.PipelineOptions}} and 
{{com.google.protobuf.ByteString}}.

{noformat}
Linkage Check difference on beam-sdks-java-io-google-cloud-platform between 
master(b00885a1) and BEAM-9444-gcp-bom(fec5361f):
Lines starting with '<' mean the branch remedies the errors (good)
Lines starting with '>' mean the branch introduces new errors (bad)
7c7,436
< Class com.github.luben.zstd.ZstdInputStream is not found;
---
> Class org.apache.beam.sdk.options.PipelineOptions is not found;
>   referenced by 27 class files
>     org.apache.beam.sdk.io.gcp.bigtable.BigtableIO 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigtable.BigtableConfig 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigquery.WriteRename 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigquery.StreamingWriteTables 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigquery.BigQueryIO 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigquery.BigQueryQuerySource 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
...

> Class com.google.protobuf.ByteString is not found;
>   referenced by 13 class files
>     org.apache.beam.sdk.io.gcp.bigtable.BigtableIO 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigtable.BigtableServiceImpl 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
>     org.apache.beam.sdk.io.gcp.bigquery.BigQueryStorageStreamSource 
> (beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.jar)
{noformat}

> Shall we use GCP Libraries BOM to specify Google-related library versions?
> --------------------------------------------------------------------------
>
>                 Key: BEAM-9444
>                 URL: https://issues.apache.org/jira/browse/BEAM-9444
>             Project: Beam
>          Issue Type: Task
>          Components: build-system
>            Reporter: Tomo Suzuki
>            Assignee: Tomo Suzuki
>            Priority: Major
>         Attachments: Screen Shot 2020-03-13 at 13.33.01.png, Screen Shot 
> 2020-03-17 at 16.01.16.png
>
>          Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Shall we use GCP Libraries BOM to specify Google-related library versions?
>   
>  I've been working on Beam's dependency upgrades in the past few months. I 
> think it's time to consider a long-term solution to keep the libraries 
> up-to-date with small maintenance effort. To achieve that, I propose Beam to 
> use GCP Libraries BOM to set the Google-related library versions, rather than 
> trying to make changes in each of ~30 Google libraries.
>   
> h1. Background
> A BOM is pom.xml that provides dependencyManagement to importing projects.
>   
>  GCP Libraries BOM is a BOM that includes many Google Cloud related libraries 
> + gRPC + protobuf. We (Google Cloud Java Diamond Dependency team) maintain 
> the BOM so that the set of the libraries are compatible with each other.
>   
> h1. Implementation
> Notes for obstacles.
> h2. BeamModulePlugin's "force" does not take BOM into account (thus fails)
> {{forcedModules}} via version resolution strategy is playing bad. This causes
> {noformat}
> A problem occurred evaluating project ':sdks:java:extensions:sql'. 
> Could not resolve all dependencies for configuration 
> ':sdks:java:extensions:sql:fmppTemplates'.
> Invalid format: 'com.google.cloud:google-cloud-core'. Group, name and version 
> cannot be empty. Correct example: 'org.gradle:gradle-core:1.0'{noformat}
> !Screen Shot 2020-03-13 at 13.33.01.png|width=489,height=287! 
>   
> h2. :sdks:java:maven-archetypes:examples needs the version of 
> google-http-client
> The task requires the version for the library:
> {code:java}
>     'google-http-client.version': 
> dependencies.create(project.library.java.google_http_client).getVersion(),
> {code}
> This would generate NullPointerException. Running gradlew without the 
> subproject:
>   
> {code:java}
> ./gradlew -p sdks/java check -x :sdks:java:maven-archetypes:examples:check
> {code}
> h1. Problem in Gradle-generated pom files
> The generated Maven artifact POM has invalid data due to the BOM change. For 
> example my locally installed 
> {{~/.m2/repository/org/apache/beam/beam-sdks-java-io-google-cloud-platform/2.21.0-SNAPSHOT/beam-sdks-java-io-google-cloud-platform-2.21.0-SNAPSHOT.pom}}
>  had the following problems.
> h2. The GCP Libraries BOM showing up in dependencies section:
> {noformat}
>   <dependencies>
>     <dependency>
>       <groupId>com.google.cloud</groupId>
>       <artifactId>libraries-bom</artifactId>
>       <version>4.2.0</version>
>       <scope>compile</scope>
>       <exclusions>
>         <exclusion>
>           <groupId>com.google.guava</groupId>
>           <artifactId>guava-jdk5</artifactId>
>         </exclusion>...
>       </exclusions>
>     </dependency>
> {noformat}
> h2. The artifact that use the BOM in Gradle is missing version in the 
> dependency.
> {noformat}
>     <dependency>
>       <groupId>com.google.api</groupId>
>       <artifactId>gax</artifactId>
>       <version/>
>       <scope>compile</scope>
>       ...
>     </dependency>
> {noformat}
> h1. DependencyManagement section in generated pom.xml
> How can I check whether a entry in dependencies is "platform"?
> !Screen Shot 2020-03-17 at 16.01.16.png|width=504,height=344!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to