diff --git a/scala/private/rules/scala_binary.bzl b/scala/private/rules/scala_binary.bzl index 58372345a..3d7625534 100644 --- a/scala/private/rules/scala_binary.bzl +++ b/scala/private/rules/scala_binary.bzl @@ -52,6 +52,10 @@ _scala_binary_attrs = { "main_class": attr.string(mandatory = True), "classpath_resources": attr.label_list(allow_files = True), "jvm_flags": attr.string_list(), + "runtime_jdk": attr.label( + default = Label("@bazel_tools//tools/jdk:current_java_runtime"), + providers = [java_common.JavaRuntimeInfo], + ), } _scala_binary_attrs.update(launcher_template) diff --git a/test/BUILD b/test/BUILD index 568655532..6f6d25240 100644 --- a/test/BUILD +++ b/test/BUILD @@ -471,8 +471,17 @@ scala_specs2_junit_test( "//test/src/main/scala/scalarules/test/twitter_scrooge:justscrooge2b_binary", "//test/src/main/scala/scalarules/test/large_classpath:largeClasspath", "//test:test_scala_proto_server", + "//test:scala_binary_jdk_11", ]] +# Make sure scala_binary respects runtime_jdk on bazel run +scala_binary( + name = "scala_binary_jdk_11", + srcs = ["ScalaBinaryJdk11.scala"], + main_class = "scalarules.test.ScalaBinaryJdk11", + runtime_jdk = "@bazel_tools//tools/jdk:remote_jdk11", +) + # Generate a file containing the rootpaths of a Scala binary. genrule( name = "rootpath-script", diff --git a/test/ScalaBinaryJdk11.scala b/test/ScalaBinaryJdk11.scala new file mode 100644 index 000000000..e60f0ad67 --- /dev/null +++ b/test/ScalaBinaryJdk11.scala @@ -0,0 +1,11 @@ +package scalarules.test + +object ScalaBinaryJdk11 { + def main(args: Array[String]): Unit = { + val expectedMajorVersion = "11"; + val version = System.getProperty("java.version"); + val majorVersionMatches = version.startsWith(expectedMajorVersion + "."); + val failureMsg = "Expected major version of " + expectedMajorVersion + " but got version: " + version; + require(majorVersionMatches, failureMsg); + } +}