https://groups.google.com/forum/#!topic/bazel-discuss/Zbp62_7uMfA
See the discussion over here for full details.
In summary when A => B => C (i.e. C is a transitive dependency of A.)
Both B and C are defined as git_repositories, and must be pulled at build time.
Then when the B's BUILD file specifies a dependency on C:
java_library(
name = "B",
srcs = glob(["*.java"]),
deps = ["//java/com/example:C-target"],
visibility = ["//visibility:public"],
)
The build system currently assumes the dependency is under the repository-local path (B's path.)
A preferable behavior would be to assume the dependency is under the "main" repository.