You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2020/11/03 13:46:01 UTC

[jira] [Work logged] (BEAM-9444) Shall we use GCP Libraries BOM to specify Google-related library versions?

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

ASF GitHub Bot logged work on BEAM-9444:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 03/Nov/20 13:45
            Start Date: 03/Nov/20 13:45
    Worklog Time Spent: 10m 
      Work Description: kennknowles commented on pull request #13075:
URL: https://github.com/apache/beam/pull/13075#issuecomment-720711343


   It does seem that if a module had any of these deps but forgot the `enforcedPlatform` line then it would go back to getting the arbitrary latest version. I understand fixing that is in a follow-up.
   
   Here's what I did to view the dep changes:
   
   ```
   # gcp is GNU cp here
   mkdir ~/tmp/deps-before
   git checkout github/master
   ./gradlew dependencyReport
   find . -name dependencies.txt -exec gcp --parents \{\} ~/tmp/deps-before/ \;
   
   mkdir ~/tmp/deps-after
   git checkout github/pr/13075
   ./gradlew dependencyReport
   find . -name dependencies.txt -exec gcp --parents \{\} ~/tmp/deps-after/ \;
   
   diff --brief --recursive ~/tmp/deps-before ~/tmp/deps-after
   
   diff --unified=0 --recursive ~/tmp/deps-before ~/tmp/deps-after
   ```
   
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Issue Time Tracking
-------------------

    Worklog Id:     (was: 506784)
    Time Spent: 18.5h  (was: 18h 20m)

> 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: P3
>         Attachments: Screen Shot 2020-03-13 at 13.33.01.png, Screen Shot 2020-03-17 at 16.01.16.png
>
>          Time Spent: 18.5h
>  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)