La lista de materiales (BOM) de la API de Google Ads administra las versiones de las dependencias
para evitar conflictos con bibliotecas como Guava y GAX
que también usan otros frameworks. La BOM garantiza que uses las versiones exactas de estas dependencias que se probaron con la biblioteca cliente de Google Ads.
Esta es la forma recomendada de consumir los artefactos de la biblioteca cliente.
Configuración de Maven
Agrega la BOM a <dependencyManagement> y declara google-ads en tu
pom.xml archivo:
<!-- Import the Bill of Materials (BOM) to ensure you're using compatible
versions of all google-ads libraries. -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.api-ads</groupId>
<artifactId>google-ads-bom</artifactId>
<version>48.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Add the google-ads dependency, without a version. The version is
managed by the BOM. -->
<dependency>
<groupId>com.google.api-ads</groupId>
<artifactId>google-ads</artifactId>
</dependency>
Configuración de Gradle
Gradle 5.0 y versiones posteriores admiten la importación de una BOM de forma nativa con platform().
En Groovy DSL (build.gradle):
// Import the Bill of Materials (BOM).
implementation platform('com.google.api-ads:google-ads-bom:48.0.0')
// Add the google-ads dependency, without a version.
implementation 'com.google.api-ads:google-ads'
En Kotlin DSL (build.gradle.kts):
// Import the Bill of Materials (BOM).
implementation(platform("com.google.api-ads:google-ads-bom:48.0.0"))
// Add the google-ads dependency, without a version.
implementation("com.google.api-ads:google-ads")
Cómo declarar dependencias cubiertas por la BOM
La BOM de la API de Google Ads incluye la administración de versiones para varias
bibliotecas comunes, como Guava, Protobuf, GAX, y gRPC. Para evitar posibles conflictos de dependencias, no debes especificar una versión cuando declares dependencias que cubre la BOM. La BOM administra automáticamente las versiones de estas bibliotecas, lo que garantiza la compatibilidad.
Por ejemplo, para declarar la dependencia de Guava en Maven, usa lo siguiente:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<!-- NO VERSION SPECIFIED -->
</dependency>
En Gradle Groovy DSL (build.gradle):
implementation 'com.google.guava:guava' // NO VERSION SPECIFIED
En Gradle Kotlin DSL (build.gradle.kts):
implementation("com.google.guava:guava") // NO VERSION SPECIFIED
Si omites la versión, permites que la BOM la administre, lo que ayuda a evitar problemas causados por versiones de dependencias incompatibles. Los indicadores comunes de conflictos de dependencias incluyen NoSuchMethodError o ClassNotFoundException, que a menudo se pueden resolver si te aseguras de que todas las dependencias administradas por la BOM no tengan una versión especificada.