[ 
https://issues.apache.org/jira/browse/BEAM-9444?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tomo Suzuki updated BEAM-9444:
------------------------------
    Description: 
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}
    '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}


  was:
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

{{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! 
  

h1.  :sdks:java:maven-archetypes:examples fails

The task requires version for 

{code}
    '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}



> 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
>
>          Time Spent: 1h 10m
>  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}
>     '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}



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

Reply via email to