GoogleCloudPlatform / GoogleCloudPlatform/cloud-opensource-java

Libraries BOM for Guava's -jre flavor (Java 8+)

オープン
#1,884 コメント 6 件 リアクション 0 件 担当者 0 名 GitHub で見る
blocked p3
主要言語
Java
スター
163
フォーク
80
PR マージ指標
30日以内にマージされた PR はありません

説明

Shall we create the Libraries BOM with Guava's -jre flavor?

As of now, the Libraries BOM uses Guava's -android flavor. This flavor of Guava does not have methods for Java 8+, such as `CacheBuilder.expireAfterWrite(java.time.Duration)`. ([Duration](https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html) class was introduced in Java 8.) If a project uses the Libraries BOM and depends on a library that touches the Java 8+ methods (for example `com.google.cloud.bigdataoss:gcsio`), the JVM throws `NoSuchMethodError`:

```
java.lang.NoSuchMethodError: com.google.common.cache.CacheBuilder.expireAfterWrite(Ljava/time/Duration;)Lcom/google/common/cache/CacheBuilder;
at com.google.cloud.hadoop.gcsio.GoogleCloudStorageImpl.(GoogleCloudStorageImpl.java:149)
```

Therefore, Java 8 users in such situations need to override the version of Guava. The step is documented in https://github.com/GoogleCloudPlatform/cloud-opensource-java/wiki/The-Google-Cloud-Platform-Libraries-BOM#guava-versions--jre-or--android . As noted there we cannot override Gradle's `enforcedPlatform` keyword, which controls transitive dependency versions. (`platform` works but this does not control transitive dependencies) Maven users can override transitive dependencies by adding guava entry in the `dependencyManagement` section.

Given that Java 8 users are majority right now (Java 7 users are few percent in GCP), shall we target for Java 8 users as the main audience?

This request is from @kileys (Dataflow team). The options listed below are prepared by suztomo.

# Option 1: change main target audience to Java 8 users

- The Libraries BOM includes Guava's -jre flavor that supports Java 8 operations
- Java 7 users can override the guava version as in the wiki page.

# Option 2: two flavors of the Libraries BOM

- We publish 2 flavors of the Libraries BOM for both Java 8+ and Java 7.

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。