Lista de materiais

A lista de materiais (BOM) da API Google Ads gerencia versões de dependência para evitar conflitos com bibliotecas como Guava e GAX, que também são usadas por outros frameworks. A BOM garante que você use as versões exatas dessas dependências que foram testadas com a biblioteca de cliente do Google Ads.

Essa é a maneira recomendada de consumir os artefatos da biblioteca de cliente.

Configuração do Maven

Adicione a BOM a <dependencyManagement> e declare google-ads no seu arquivo 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>46.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>

Configuração do Gradle

O Gradle 5.0 e versões mais recentes oferecem suporte à importação nativa de uma BOM usando platform().

Na DSL do Groovy (build.gradle):

// Import the Bill of Materials (BOM).
implementation platform('com.google.api-ads:google-ads-bom:46.1.0')

// Add the google-ads dependency, without a version.
implementation 'com.google.api-ads:google-ads'

Na DSL do Kotlin (build.gradle.kts):

// Import the Bill of Materials (BOM).
implementation(platform("com.google.api-ads:google-ads-bom:46.1.0"))

// Add the google-ads dependency, without a version.
implementation("com.google.api-ads:google-ads")

Declarar dependências cobertas pela BOM

A BOM da API Google Ads inclui o gerenciamento de versões de várias bibliotecas comuns, como Guava, Protobuf, GAX e gRPC. Para evitar possíveis conflitos de dependência, não especifique uma versão ao declarar dependências cobertas pela BoM. A BoM gerencia automaticamente as versões dessas bibliotecas, garantindo a compatibilidade.

Por exemplo, para declarar a dependência Guava no Maven, use o seguinte:

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <!-- NO VERSION SPECIFIED -->
</dependency>

Na DSL do Gradle Groovy (build.gradle):

implementation 'com.google.guava:guava' // NO VERSION SPECIFIED

Na DSL do Kotlin do Gradle (build.gradle.kts):

implementation("com.google.guava:guava") // NO VERSION SPECIFIED

Ao omitir a versão, você permite que a BOM gerencie isso, o que ajuda a evitar problemas causados por versões de dependência incompatíveis. Os indicadores comuns de conflitos de dependência incluem NoSuchMethodError ou ClassNotFoundException, que geralmente podem ser resolvidos garantindo que todas as dependências gerenciadas pela BOM não tenham uma versão especificada.