From ab1b97234ded461407b163b178a592cdabe66930 Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Wed, 13 Dec 2017 23:41:45 +0100 Subject: [PATCH] Bazel: Support building with Java 9 Bazel@HEAD supports Java 9. The current code has one single issue with Java 9 compliance: the usage of javax.xml.bind.DatatypeConverter class for printHexBinary() method. This class is not available on Java 9. One alternative is to use guava library. Something similar was done here: [1]. But unlike the case with checkstyle library, JGit currently doesn't use guava. Instead, we add java.xml.bind module with --add-modules compiler option. To build (or test) with Java 9, build custom bazel version and issue: $ bazel --host_javabase=/usr/lib64/jvm/java-9-openjdk build \ --javacopt='--release 9' \ --java_toolchain=@bazel_tools//tools/jdk:toolchain_jdk9 :all The Java 9 support is backwards compatible. * [1] https://github.com/checkstyle/checkstyle/issues/5027 Change-Id: I2c5203fc4e65885ce7b210f824fda85ba6d6c51d Signed-off-by: David Ostrovsky --- BUILD | 7 +++++++ org.eclipse.jgit/BUILD | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/BUILD b/BUILD index be6dd767d..5fea669f7 100644 --- a/BUILD +++ b/BUILD @@ -1,5 +1,12 @@ package(default_visibility = ["//visibility:public"]) +config_setting( + name = "jdk9", + values = { + "java_toolchain": "@bazel_tools//tools/jdk:toolchain_jdk9", + }, +) + genrule( name = "all", testonly = 1, diff --git a/org.eclipse.jgit/BUILD b/org.eclipse.jgit/BUILD index 60c4d3793..6ba7796b7 100644 --- a/org.eclipse.jgit/BUILD +++ b/org.eclipse.jgit/BUILD @@ -14,6 +14,10 @@ RESOURCES = glob(["resources/**"]) java_library( name = "jgit", srcs = SRCS, + javacopts = select({ + "//:jdk9": ["--add-modules=java.xml.bind"], + "//conditions:default": [], + }), resource_strip_prefix = "org.eclipse.jgit/resources", resources = RESOURCES, deps = [