Continuous integration of a large interconnected Java codebase can be very challenging. The traditional solution is to break the code up to small cohesive repositories and define semantically versioned modules in each one (e.g. using Maven or Gradle) in such a manner that won't break APIs. This leads to technical debt and stagnation. Bazel allows to discard versions aside and to work purely with source code dependencies, whether in the local repository or an external one. It can handle very large Java codebases using aggressive caching and a high degree of parallelism.