I recently implemented these bazel rules for frege:
They allow you to depend on any other java/scala code or vice-versa.
I haven't used them much, but they may be interested to people interested in reproducible build, which bazel gives you.
There is one efficiency issue: since bazel uses hashing to determine if files have changed, the timestamps embedded means you get a full rebuild every time:
see issue:
I have not yet had the time to send a PR to add the option to frege to put a constant value in the timestamp slot which will make things reproducible.