# Dependency Convergence Check

This project includes a test case for dependency convergence for some (not all)
artifacts in the Google Cloud Shared Dependencies BOM.

This project is not meant to be used by end-users or published to Maven Central.
