Para garantir que seus projetos tenham versões compatíveis das
bibliotecas de cliente do Cloud, use as versões especificadas na lista de materiais (BOM) das bibliotecas Cloud de Confiance. As bibliotecas na BoM não têm conflitos de dependência que se manifestariam como NoSuchMethodError ou NoClassDefFoundError.
A BOM é necessária porque o Google publica mais de 200 bibliotecas Java de código aberto que facilitam o uso de serviços em Cloud de Confiance by S3NS. As bibliotecas Cloud de Confiance dependem de várias bibliotecas fundamentais que podem ser usadas para fins gerais.
Essas recomendações se aplicam aos componentes das seguintes bibliotecas:
Como atualizar seu projeto para usar a BOM
Para garantir que seus projetos usem versões compatíveis das bibliotecas
e dos artefatos de componentes, importe com.google.cloud:libraries-bom e use
a BOM para especificar versões de dependências. Certifique-se de remover todas as versões definidas
anteriormente.
Se você encontrar problemas de compatibilidade com o protobuf-java 4.x, atualize a base de código e as dependências para garantir a compatibilidade. Consulte as notas da versão de libraries-bom v26.50.0 e libraries-bom v26.75.0 para possíveis problemas de compatibilidade.
Maven
Importe a BOM na seção dependencyManagement do seu arquivo pom.xml.
Inclua artefatos específicos de que você depende na seção dependencies, mas não especifique as versões dos artefatos na seção dependencies. O exemplo abaixo
mostra como importar a BOM e incluir o artefato
google-cloud-storage.
Neste exemplo, como a BoM gerencia as versões da biblioteca, a
versão de google-cloud-storage é omitida.
Gradle
Por padrão, as BOMs são compatíveis com o Gradle 5.x ou posterior. Adicione uma dependência platform
em com.google.cloud:libraries-bom e remova a versão das
declarações de dependência no arquivo build.gradle do artefato.
As palavras-chave platform e enforcedPlatform fornecem versões de dependência declaradas em uma BOM. A palavra-chave enforcedPlatform aplica as versões de dependência declaradas na BOM e, portanto, modifica o que você especificou.
Para ver mais detalhes sobre as palavras-chave platform e enforcedPlatform no Gradle 5.x ou versões mais recentes, consulte
Gradle: como importar BOMs do Maven.
Se você estiver usando o Gradle 4.6 ou uma versão mais recente, adicione
enableFeaturePreview('IMPROVED_POM_SUPPORT') ao arquivo settings.gradle.
Para saber mais, consulte as Notas da versão do Gradle 4.6: importação de BOM.
Versões do Gradle anteriores à 4.6 não são compatíveis com BOMs.
SBT
O SBT não é compatível com o BOM. Você pode encontrar versões recomendadas de bibliotecas de uma versão específica da BoM no painel e definir as versões manualmente.
Bazel
O Bazel não é compatível com BOMs. É possível encontrar versões recomendadas de bibliotecas de uma versão específica do BOM no painel e definir as versões manualmente.
Versões do Guava -jre ou -android
Desde o lançamento da versão 21.0.0, a BOM de bibliotecas inclui a versão -jre do Guava, que é compatível com Java 8 e versões mais recentes. A seção abaixo não se aplica a usuários do Java 8.
A versão do Guava do Google contém duas versões de artefatos: "-jre" e "-android".
O com "-jre", como com.google.guava:guava:31.1-jre, é
para Java 8 e compatível com funções e streams lambda.
A outra versão com o sufixo "-android" (como
com.google.guava:guava:31.1-android) é para desenvolvimento em Java 7 e Android.
A BoM Cloud de Confiance Libraries contém o Guava com a versão "-android"
para garantir que a BoM funcione no Java 7. No entanto, isso significa que a versão do
Guava na BOM não tem alguns métodos destinados a funções lambda do Java 8, como ImmutableList.toImmutableList().
Caso seu projeto precise do Java 8 ou mais recente e use classes Guava
como com.google.common.collect.Streams, adicione uma dependência em uma
versão JRE do Guava.
No Maven:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version> <!-- "-jre" for Java 8 or higher -->
</dependency>
</dependencies>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>libraries-bom</artifactId>
...
</dependencyManagement>
No Gradle:
dependencies {
constraints {
implementation 'com.google.guava:guava:31.1-jre' // "-jre" for Java 8 or higher
}
implementation platform('com.google.cloud:libraries-bom:26.12.0')
...
}
A amostra anterior não funcionará se você usar enforcedPlatform porque enforcedPlatform tem precedência sobre constraints. Se quiser usar
enforcedPlatform com a versão do Guava, configure
ResolutionStrategy.