tree: fbc82b1f5e113db687714d3cdb43fe519af182e6 [path history] [tgz]
  1. nested/
  2. BUILD.bazel
  3. Main.kt
  4. MODULE.bazel
  5. README.md
examples/nested_module_resources/README.md

Nested Module Resources Example

What This Tests

This example tests resource path resolution across Bazel module boundaries when using resource_strip_prefix.

Problem Statement

When a target in one Bazel module depends on a library in an external Bazel module that has resources with a custom resource_strip_prefix, the resource paths need to be correctly resolved.

Module Structure

nested_module_resources/          # Main module
├── MODULE.bazel                   # bazel_dep(name = "nested")
├── Main.kt                        # Calls @nested//:printer
└── nested/                        # SEPARATE BAZEL MODULE
    ├── MODULE.bazel               # module(name = "nested")
    ├── Printer.kt
    ├── BUILD.bazel                # resource_strip_prefix = "resourcez"
    └── resourcez/
        └── resource.txt

Key Point: nested/ is a separate Bazel module with its own MODULE.bazel, not just a subdirectory.

The Bug (Before Fix)

Without the fix in PR #1390, resource paths from external modules included the module path prefix, causing the strip prefix check to fail:

With nested/ in .bazelignore:

Error in fail: Resource file ../nested+/resourcez/resource.txt is not under
the specified prefix to strip resourcez
  • Resource path: ../nested+/resourcez/resource.txt
  • Strip prefix: resourcez
  • Check fails: ../nested+/resourcez/resource.txt doesn't start with resourcez

Without .bazelignore:

Error in fail: Resource file nested/resourcez/resource.txt is not under
the specified prefix to strip resourcez
  • Resource path: nested/resourcez/resource.txt
  • Strip prefix: resourcez
  • Check fails: nested/resourcez/resource.txt doesn't start with resourcez