बिल ऑफ़ मटीरियल

Google Ads API का बिल ऑफ़ मटीरियल (बीओएम) डिपेंडेंसी के वर्शन मैनेज करता है. इससे Guava और GAX जैसी लाइब्रेरी के साथ डिपेंडेंसी के टकराव से बचा जा सकता है. इन लाइब्रेरी का इस्तेमाल अन्य फ़्रेमवर्क भी करते हैं. बीओएम यह पक्का करता है कि 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>44.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 डिपेंडेंसी यह है:

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

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

बीओएम में शामिल डिपेंडेंसी का एलान करना

Google Ads API बीओएम में, कई सामान्य लाइब्रेरी के वर्शन मैनेज करने की सुविधा शामिल है. जैसे, Guava, Protobuf, GAX, और gRPC. डिपेंडेंसी के टकराव से बचने के लिए, बीओएम में शामिल डिपेंडेंसी का एलान करते समय, आपको कोई वर्शन तय नहीं करना चाहिए. बीओएम, इन लाइब्रेरी के वर्शन को अपने-आप मैनेज करता है. इससे यह पक्का होता है कि ये लाइब्रेरी एक-दूसरे के साथ काम करती हों.

उदाहरण के लिए, Maven में Guava डिपेंडेंसी का एलान करने के लिए, यह तरीका अपनाएं:

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

और Gradle में यह तरीका अपनाएं:

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

वर्शन की जानकारी न देने पर, बीओएम इसे मैनेज करता है. इससे, डिपेंडेंसी के ऐसे वर्शन इस्तेमाल करने से होने वाली समस्याओं से बचा जा सकता है जो एक-दूसरे के साथ काम नहीं करते. डिपेंडेंसी के टकराव के सामान्य इंडिकेटर में NoSuchMethodError या ClassNotFoundException शामिल हैं. बीओएम से मैनेज की जाने वाली सभी डिपेंडेंसी के लिए, कोई वर्शन तय न करके, इन समस्याओं को अक्सर हल किया जा सकता है.