Lista de materiais

A lista de materiais (BOM, na sigla em inglês) da API Google Ads gerencia as versões de dependência para evitar conflitos com bibliotecas como Guava e GAX que também são usadas por outras estruturas. A BOM garante que você use as versões exatas dessas dependências que foram testadas com a biblioteca de cliente da API 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 pom.xml arquivo:

<!-- 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>

Configuração do Gradle

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

Na DSL do Groovy (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'

Na DSL do Kotlin (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")

Como declarar dependências cobertas pela BOM

A BOM da API Google Ads inclui o gerenciamento de versões para 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 Groovy do Gradle (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 a gerencie, 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.