You’ve probably come across the BOM term if you’ve worked with big libraries like Jetpack Compose or Firebase. But what exactly is a BOM dependency? Why is it important? And how can we create our own BOM for our SDKs and their dependencies? Let’s find out.

As an example, we can take a look into the Jetpack Compose BOM dependency’s package contents. For this purpose, we can open Google’s Maven repository and search for it. Inside you can see only a POM file. Let’s see what’s inside.

What are the benefits of BOM?

A BOM dependency is a special kind of dependency that specifies the versions of a group of related libraries that are known to work well together. By using a BOM dependency, you can avoid specifying the versions of each individual library in your app, and let the BOM handle the compatibility for you. This can simplify your dependency management and reduce the risk of version conflicts or outdated libraries.

In other words, BOM is shifting the hard work to the library developers so they come up with a list of final versions of dependencies that are made for each other and work fine together with no compile time or run time issues.

What is a BOM?

A BOM is essentially a special kind of POM (Project Object Model) file that is used to control the versions of a project’s dependencies. It provides a central place to define and update those versions. This means it contains dependency management information, specifying the versions of the dependencies that should be used. The BOM has a packaging nature of pom.

Here’s what you might typically find inside a BOM:

  • Dependency Management Section: This is where all the project dependencies are declared. These are the libraries that your project depends on.
  • Group IDs, Artifact IDs, and Versions: For each dependency, the BOM specifies the group ID, artifact ID, and version. This information is used by Maven to locate and download the dependencies.

You can think of a BOM as a directory that declares all the related project versions, thus saving your version resolution efforts. Once your BOM is imported into your project descriptor, you no longer need to declare the version when declaring a dependency because it will be inherited from that imported pom.

Check out this video to learn more about how to use and how to make your own BOM.

How to make and use BOM (Bill of Materials) dependencies in Android projects

Hope you enjoy and do not forget to follow me on Medium and YouTube to get notified when there is a new topic.