As far as I understand, Bazel by default provides an embedded JDK (or at least some rules to get it), so we don't have to have one locally.
rules_jvm_external use Coursier, which is invoked by running java:
https://github.com/bazelbuild/rules_jvm_external/blob/aed0eb3747682e64611bf98bb1ca590a44b470de/coursier.bzl#L109-L129
This assumes java is available at JAVA_HOME, which is unset with no local JDK. If I understand correctly Bazel sets JAVABASE to the location of the embedded JDK.
So is it possible to use the embedded JDK with rules_jvm_external? Maybe it is possible now and I am missing something? And if it's not currently possible, wouldn't it be sufficient to just check if JAVABASE is set too? I guess the order of checking is important because someone can have a local JDK, while still wanting to use the embedded one.
For now, a cheap workaround is to just set JAVA_HOME relatively, knowing that both maven and jdk are in the external workspace. I can confirm that adding this line:
build --repo_env=JAVA_HOME=../bazel_tools/jdk
to the .bazelrc file works and the embedded JDK is used.
As far as I understand, Bazel by default provides an embedded JDK (or at least some rules to get it), so we don't have to have one locally.
rules_jvm_externaluse Coursier, which is invoked by runningjava:https://github.com/bazelbuild/rules_jvm_external/blob/aed0eb3747682e64611bf98bb1ca590a44b470de/coursier.bzl#L109-L129
This assumes java is available at
JAVA_HOME, which is unset with no local JDK. If I understand correctly Bazel setsJAVABASEto the location of the embedded JDK.So is it possible to use the embedded JDK with
rules_jvm_external? Maybe it is possible now and I am missing something? And if it's not currently possible, wouldn't it be sufficient to just check ifJAVABASEis set too? I guess the order of checking is important because someone can have a local JDK, while still wanting to use the embedded one.For now, a cheap workaround is to just set
JAVA_HOMErelatively, knowing that bothmavenandjdkare in theexternalworkspace. I can confirm that adding this line:to the
.bazelrcfile works and the embedded JDK is used.