Ведомость материалов (BOM) Google Ads API управляет версиями зависимостей, чтобы избежать конфликтов с библиотеками, такими как 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.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>
Конфигурация 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.0.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.0.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. Часто их можно устранить, убедившись, что для всех зависимостей, управляемых спецификацией, не указана версия.