Спецификация материалов (BOM) API Google Ads управляет версиями зависимостей, чтобы избежать конфликтов с такими библиотеками, как Guava и GAX , которые также используются другими фреймворками. Спецификация материалов (BOM) гарантирует, что вы используете именно те версии этих зависимостей, которые были протестированы с клиентской библиотекой Google Ads.
Это рекомендуемый способ использования артефактов клиентской библиотеки.
Конфигурация Maven {#maven-configuration}
Зависимость Maven:
<!-- 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>41.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:
// Import the Bill of Materials (BOM).
implementation platform('com.google.api-ads:google-ads-bom:41.1.0')
// Add the google-ads dependency, without a version.
implementation 'com.google.api-ads:google-ads'
Декларирование зависимостей, охватываемых спецификацией
В спецификации Google Ads API включено управление версиями нескольких распространённых библиотек, таких как Guava , Protobuf , GAX и gRPC . Во избежание потенциальных конфликтов зависимостей не следует указывать версию при объявлении зависимостей, охватываемых спецификацией. Спецификация автоматически управляет версиями этих библиотек, обеспечивая совместимость.
Например, чтобы объявить зависимость Guava в Maven, используйте следующее:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<!-- NO VERSION SPECIFIED -->
</dependency>
И в Gradle:
implementation 'com.google.guava:guava' // NO VERSION SPECIFIED
Не указывая версию, вы позволяете BOM управлять ею, что помогает предотвратить проблемы, вызванные несовместимостью версий зависимостей. К распространённым признакам конфликтов зависимостей относятся NoSuchMethodError или ClassNotFoundException , которые часто можно устранить, убедившись, что для всех зависимостей, управляемых BOM, не указана версия.