tree: 57af744a7072f0c1b3d3d8fe081d53489f2611ca [path history] [tgz]
  1. root/
  2. submodule1/
  3. submodule2/
  4. README.md
examples/submodules/README.md

Submodules

This repository simulates a situation where a root module depends on rules_doxygen as well as other two modules, submodule1 and submodule2, which also depend on rules_doxygen. The goal is to make sure there are no conflicts between the different versions of rules_doxygen used by the root module and the submodules.

To try this example, move to either submodule1, submodule2 or root and run the following command:

bazel build //:doxygen

Using dev_dependency

Since rules_doxygen is usually juts a development dependency, it is recommended to set the dev_dependency parameter to True when declaring the dependency on rules_doxygen in the MODULE.bazel file of any module.

# MODULE.bazel file

module(name = "my_module")

bazel_dep(name = "rules_doxygen", version = "...", dev_dependency = True)

This way, all modules that depend on my_module will not inherit the dependency on rules_doxygen, and will be free to use their own version of rules_doxygen.

Build dependencies

If you use rules_doxygen as a build dependency, make sure to use the repository tag to avoid conflicts when your module is used by other modules.

# MODULE.bazel file

module(name = "my_module")

bazel_dep(name = "rules_doxygen", version = "...")

doxygen_extension = use_extension("@rules_doxygen//:extensions.bzl", "doxygen_extension")
doxygen_extension.repository(name = "submodule2_doxygen")
use_repo(doxygen_extension, "submodule2_doxygen")