Bazel: Support building with Java 9

Bazel@HEAD supports Java 9 and the upcoming Bazel release 0.15.0 will
include Java 9 JDK.

Test Plan:

  $ bazel test \
      --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_java9 \
      --java_toolchain=@bazel_tools//tools/jdk:toolchain_java9 //...

Change-Id: I9d6b716391bbf96b0894a8f3be900bcf8ef48903
This commit is contained in:
David Ostrovsky
2017-12-10 22:32:56 +01:00
parent c2b58731ba
commit c7eb16648b
3 changed files with 41 additions and 1 deletions

7
BUILD
View File

@@ -3,6 +3,13 @@ package(default_visibility = ["//visibility:public"])
load("//tools/bzl:genrule2.bzl", "genrule2")
load("//tools/bzl:pkg_war.bzl", "pkg_war")
config_setting(
name = "java9",
values = {
"java_toolchain": "@bazel_tools//tools/jdk:toolchain_java9",
},
)
genrule(
name = "gen_version",
outs = ["version.txt"],

View File

@@ -14,6 +14,28 @@ To build Gerrit from source, you need:
* zip, unzip
* gcc
[[Java 9 support]]
Java 9 is supported through alternative java toolchain
link:https://docs.bazel.build/versions/master/toolchains.html[Bazel option].
The Java 9 support is backwards compatible. Java 8 is still the default.
To build Gerrit with Java 9, specify JDK 9 java toolchain:
```
$ bazel build \
--host_java_toolchain=@bazel_tools//tools/jdk:toolchain_java9 \
--java_toolchain=@bazel_tools//tools/jdk:toolchain_java9 \
:release
```
Note that the following option must be added to `container.javaOptions`
in `$gerrit_site/etc/gerrit.config` to run Gerrit with Java 9:
```
[container]
javaOptions = --add-modules java.activation \
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
```
[[build]]
== Building on the Command Line

View File

@@ -67,7 +67,18 @@ def junit_tests(name, srcs, **kwargs):
_GenSuite(name = s_name,
srcs = srcs,
outname = s_name)
jvm_flags = kwargs.get("jvm_flags", [])
jvm_flags = jvm_flags + select({
"//:java9": [
# Enforce JDK 8 compatibility on Java 9, see
# https://docs.oracle.com/javase/9/intl/internationalization-enhancements-jdk-9.htm#JSINT-GUID-AF5AECA7-07C1-4E7D-BC10-BC7E73DC6C7F
"-Djava.locale.providers=COMPAT,CLDR,SPI",
"--add-modules java.activation",
"--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED",
],
"//conditions:default": [],
})
native.java_test(name = name,
test_class = s_name,
srcs = srcs + [":"+s_name],
**kwargs)
**dict(kwargs, jvm_flags=jvm_flags))