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 archivo pom.xml:
<!-- 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.1.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 las versiones posteriores admiten la importación de una BoM de forma nativa con platform().
En DSL de Groovy (build.gradle):
// Import the Bill of Materials (BOM).
implementation platform('com.google.api-ads:google-ads-bom:48.1.0')
// Add the google-ads dependency, without a version.
implementation 'com.google.api-ads:google-ads'
En el DSL de Kotlin (build.gradle.kts):
// Import the Bill of Materials (BOM).
implementation(platform("com.google.api-ads:google-ads-bom:48.1.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 las 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 Guava en Maven, usa lo siguiente:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<!-- NO VERSION SPECIFIED -->
</dependency>
En el DSL de Groovy de Gradle (build.gradle):
implementation 'com.google.guava:guava' // NO VERSION SPECIFIED
En el DSL de Kotlin de Gradle (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. Entre los indicadores comunes de conflictos de dependencias, se 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.