You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "Beam JIRA Bot (Jira)" <ji...@apache.org> on 2020/08/10 17:07:11 UTC
[jira] [Commented] (BEAM-9444) Shall we use GCP Libraries BOM to
specify Google-related library versions?
[ https://issues.apache.org/jira/browse/BEAM-9444?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17174525#comment-17174525 ]
Beam JIRA Bot commented on BEAM-9444:
-------------------------------------
This issue is P2 but has been unassigned without any comment for 60 days so it has been labeled "stale-P2". If this issue is still affecting you, we care! Please comment and remove the label. Otherwise, in 14 days the issue will be moved to P3.
Please see https://beam.apache.org/contribute/jira-priorities/ for a detailed explanation of what these priorities mean.
> 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
> Priority: P2
> Labels: stale-P2
> Attachments: Screen Shot 2020-03-13 at 13.33.01.png, Screen Shot 2020-03-17 at 16.01.16.png
>
> Time Spent: 14h 40m
> 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)