Изменение Java версии в Bazel - PullRequest
1 голос
/ 16 января 2020

Я использую Bazel в качестве инструмента сборки для моего Java проекта. У меня на компьютере установлена ​​JDK 11 c, но Bazel использует Java 8 для сборки двоичных файлов. Кто-нибудь знает, как я мог это изменить?

1 Ответ

0 голосов
/ 16 января 2020

BUILD.bazel

java_binary(
    name = 'JavaBinary',
    srcs = ['JavaBinary.java'],
    main_class = 'JavaBinary',
)
load(
    "@bazel_tools//tools/jdk:default_java_toolchain.bzl",
    "default_java_toolchain",
)
default_java_toolchain(
  name = "default_toolchain",
  visibility = ["//visibility:public"],
)

JavaBinary. java

public class JavaBinary {
   public static void main(String[] args) {
    System.out.println("Successfully executed JavaBinary!");
    System.out.println("Version: " + System.getProperty("java.version"));
  }
}

WORKSPACE.bazel

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "rules_java",
    sha256 = "220b87d8cfabd22d1c6d8e3cdb4249abd4c93dcc152e0667db061fb1b957ee68",
    url = "https://github.com/bazelbuild/rules_java/releases/download/0.1.1/rules_java-0.1.1.tar.gz",
)

load("@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains")

rules_java_dependencies()

rules_java_toolchains()

Запустите его следующим образом:

bazel run :JavaBinary \
      --java_toolchain=:default_toolchain \
      --javabase=@bazel_tools//tools/jdk:remote_jdk11

Вы также можете создать .bazelrc файл и затем выполнить bazel run :JavaBinary:

.bazelr c

build --java_toolchain=:default_toolchain
build --javabase=@bazel_tools//tools/jdk:remote_jdk11
...