Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

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

Ouverte
#1,884 6 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
25/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
java
Domaine
build-system

Piste de recherche

Commencez par le Libraries BOM et la section liée du wiki sur les versions de Guava, puis examinez comment Gradle's enforcedPlatform/platform et Maven dependencyManagement sont décrits. Comparez les deux variantes de BOM proposées du point de vue de leur compatibilité avec Java 7 et Java 8+, et vérifiez que le public visé et le comportement des dépendances publiées sont documentés.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

blocked p3

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 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.<init>(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.
Langage dominant
Java
Étoiles
163
Forks
81
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de GoogleCloudPlatform/cloud-opensource-java

Toutes les issues de GoogleCloudPlatform/cloud-opensource-java

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.