Спецификация

Google Ads API Bill of Materials (BOM) управляет версиями зависимостей, чтобы избежать конфликтов с библиотеками, такими как Guava и GAX, которые также используются другими фреймворками. BOM гарантирует, что вы используете именно те версии зависимостей, которые были протестированы с клиентской библиотекой Google Рекламы.

Это рекомендуемый способ использования артефактов клиентской библиотеки.

Конфигурация Maven

Добавьте BOM в <dependencyManagement> и объявите google-ads в файле 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>

Конфигурация Gradle

Gradle 5.0 и более поздние версии поддерживают импорт BOM с помощью platform().

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

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

Объявление зависимостей, охватываемых BOM

Google Ads API BOM включает управление версиями для нескольких распространенных библиотек, таких как Guava, Protobuf, GAX и gRPC. Чтобы избежать возможных конфликтов зависимостей, не указывайте версию при объявлении зависимостей, которые охватывает BOM. BOM автоматически управляет версиями этих библиотек, обеспечивая совместимость.

Например, чтобы объявить зависимость Guava в Maven, используйте следующий код:

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

В Gradle Groovy DSL (build.gradle):

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

В Gradle Kotlin DSL (build.gradle.kts):

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

Если вы не укажете версию, BOM будет управлять ею, что поможет предотвратить проблемы, вызванные несовместимыми версиями зависимостей. Распространенные признаки конфликтов зависимостей включают NoSuchMethodError или ClassNotFoundException, которые часто можно устранить, убедившись, что для всех зависимостей, управляемых BOM, не указана версия.